程序有点复杂,根本不需要做排序
假设有四个元素,那么相邻值之差就是3个元素,且值分别是1,2,3(顺序不一定)
那么你只需要定义一个数组a[3],初始值为0,在计算相邻值之差的循环时,将差值减去1作为下标,如果a数组中该下标对应值已经是1,则直接返回不是跳跃数组,如果是0,则将对应值设置为1。如果循环能够正常结束,则输出是跳跃数组就可以啦
int main()
{
int num = 0;
int a[3000] = {0};
int b[3000] = {0};
cin>>num;
for(int i=0;i<num;i++)
cin>>a[i];
for(int i=0;i<num-1;i++)
{
int k = abs(a[i+1]-a[i]);
if(k<3000)
{
if(b[k] == 0)
b[k] = 1;
else if(b[k] == 1)
{
cout<<"Not jolly";
return 0;
}
}
else
{
cout<<"Not jolly";
return 0;
}
}
cout<<"jolly";
return 0;
}