对于输入的n个数字,它们的相邻两个元素之间取绝对差值,如果这些差值为1到n-1(无论次序),就输出“Jolly”,否则输出“Not jolly”。

刚做的水题

Description

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.

Input

Each line of input contains an integer n < 3, 000 followed by n integers representing the sequence

Output

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

Sample Output

Jolly
Not jolly

开个数组以下标为标记记录对应位差值是否出现
再用个for循环判断是否全部出现啦。
#include <stdio.h>
#include <math.h>
int main()
{
       int n,i,b,c;
       int x[4000],y[4000];
       while(scanf("%d",&n)!=EOF)
       {
              for(i=0;i<n-1;i++)
                     y[i]=0;
              for(i=0,c=1;i<n;i++)
              {
                     scanf("%d",&x[i]);
                     if(i>=1)
                     {
       if(x[i]>x[i-1])
                            b=x[i]-x[i-1];
       else
        b=x[i-1]-x[i];
                            if(b>=1&&b<=n-1)
                                   y[b-1]=1;
                     }
              }
              for(i=0;i<n-1;i++)
                     if(y[i]==0)
       c=0;
              if(c)
                     printf("Jolly\n");
              else
                     printf("Not jolly\n");
       }
       return 0;
}

发表评论

电子邮件地址不会被公开。

Post Navigation