Jolly Jumpers
时间: 1ms 内存:64M
描述:
A sequence of n > 0 integers is called a jolly jumper if the absolute values of the differences between successive elements take on all possible values 1 through n - 1. For instance,
1 4 2 3
is a jolly jumper, because the absolute differences are 3, 2, and 1, respectively. The definition implies that any sequence of a single integer is a jolly jumper. Write a program to determine whether each of a number of sequences is a jolly jumper.
输入:
Each line of input contains an integer n < 3, 000 followed by n integers representing the sequence
输出:
For each line of input generate a line of output saying ``Jolly'' or ``Not jolly''.
示例输入:
4 1 4 2 3
5 1 4 2 -1 6
示例输出:
Jolly
Not jolly
提示:
参考答案(内存最优[748]):
#include<stdio.h>
int main()
{
int n,i,j,k;
int a[3005],b[3005];
while(scanf("%d",&n)!=EOF)
{
k=0;
scanf("%d",&a[0]);
for(i=1;i<n;i++)
{
scanf("%d",&a[i]);
if(a[i]-a[i-1]<0)
b[k]=-(a[i]-a[i-1]);
else
b[k]=a[i]-a[i-1];
k++;
}
for(i=1;i<n;i++)
{
for(j=0;j<k;j++)
if(i==b[j])
break;
if(j==k)
break;
}
if(i==n)
printf("Jolly\n");
else
printf("Not jolly\n");
}
return 0;
}
参考答案(时间最优[0]):
#include<stdio.h>
#include<math.h>
int main()
{
int n,i,s,h;
while(scanf("%d",&n)!=EOF)
{
int a[3000]={0},b[3000]={0};
h=0;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
s=fabs(a[i]-a[i+1]);
if(s>n||s==n){h=1;break;}
else
{
if(b[s]>0){h=1;break;}
else b[s]++;
}
}
if(h==0)printf("Jolly\n");
else printf("Not jolly\n");
}
return 0;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。