【题意简述】:将数列中相邻的两个数做差,判断得到的绝对值是否是1,2,……,n-1,如果是的话,则是Jolly ,否则not jolly。
【分析】:开始时没有仔细看题,没有看到时相邻的两个数做差,以为任意两两做差。
而后重新分析题目后,解决了这道题目,我们可以使用一个标志数组来帮助我们储存得到的做差的绝对值的值,最后,我们只需要扫描一下这个数组看是否从1,2,……,n-1都有值与之相对应。
详见代码:
// 324K 47Ms
#include<iostream>
#include<cmath>
using namespace std;
int flag[30001];
int main()
{
int n;
int a,b;
int tmp;
while(cin>>n)
{
memset(flag,0,sizeof(flag));
cin>>a;
for(int i = 1;i<n;i++)
{
cin>>b;
tmp = abs(b-a);
flag[tmp] = 1;
a = b;
}
int j;
for(j = 1;j<n;j++)
{
if(flag[j] == 0)
break;
}
if(j == n)
cout << "Jolly" << endl;
else
cout << "Not jolly" << endl;
}
return 0;
}