网址:http://acm.tju.edu.cn/toj/showp1355.html
A sequence of n > 0 integers is called a jolly jumper if the absolute values of the difference between successive elements take on all the values 1 through n-1. For instance,
1 4 2 3is a jolly jumper, because the absolutes differences are 3, 2, and 1 respectively. The definition implies that any sequence of a single integer is a jolly jumper. You are to write a program to determine whether or not each of a number of sequences is a jolly jumper.
Each line of input contains an integer n <= 3000 followed by n integers representing the sequence. For each line of input, generate a line of output saying "Jolly" or "Not jolly".
Sample Input
4 1 4 2 3 5 1 4 2 -1 6
Output for Sample Input
Jolly Not jolly
题意:输入一个N,然后依次输入N个数字,要求相邻的两个数之间的差占据了从1~N-1之间的所有数,则为Jolly,否则为not Jolly,简单,用一个数组表示差然后用快排即可。
#include<iostream>
#include<algorithm>
using namespace std;
int f(int x,int y){
if(x>y){
return x-y;
}
else{
return y-x;
}
}
int main(){
int n,a[3010],count,k[3010],j;
while(cin>>n&&n){
count=0;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n-1;i++){
k[i]=f(a[i],a[i+1]);
}
sort(k,k+n-1);
for(j=0;j<n-1;j++)
{
// cout<<k[j]<<" ";
if(k[j]!=(j+1)){
cout<<"Not jolly"<<endl;
break;
}
}
//cout<<endl;
//cout<<j<<endl;
if(j==n-1)
cout<<"Jolly"<<endl;
}
return 0;
}