Jolly Jumpers

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;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注