2022年5月双周赛(初级班)
C. 小鱼比可爱
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a[101];//用数组a存储每条鱼的可爱程度
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++)
{
int k=0;//注意赋初值0
for(int j=1;j<=i-1;j++) if(a[j]<a[i]) k++;
cout<<k<<' ';
}
return 0;
}
/*
思路:
本题用一个双重循环即可解决。
外层循环计算第i只小鱼眼中有多少只鱼不如自己可爱,
内层循环j枚举i能看到的所有鱼,即从编号为1的鱼枚举到i-1。
用一个临时变量k记录它看到的没自己可爱的鱼的数量,最后输出k即可。
*/
D. 欢乐的跳
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a[1010],b[1010]={0};//注意给b数组赋初值0,表示一开始所有差的绝对值均未出现过
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=2;i<=n;i++)
{
int k=abs(a[i]-a[i-1]);//求差的绝对值
if(k>=1&&k<=n-1) b[k]=1;
//差的绝对值可能很大,不能直接让b[k]==1,必须要先判断,否则数组可能越界
}
int flag=1;
for(int i=1;i<=n-1;i++)
{
if(b[i]==0)//如果没有差的绝对值为i的数对,直接退出循环,标记为0
{
flag=0;
break;
}
}
if(flag==1) cout<<"Jolly";
else cout<<"Not jolly";
return 0;
}
/*
思路:
数组a存储原来的整数数组。
建立数组b,若b[i]==1,表示a数组中有两个连续元素之间差的绝对值为i,若==0,则没有。
枚举a数组中的所有数,并与相邻的元素计算差值,更新b数组。
最后,从1~n-1依次判断b[i]是否为1,如果均为1,则满足,否则不满足。
*/