天天看點

PC110201 Jolly Jumper //水題,hash

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      

竟然WA了兩次,細節處理的不好下次 做題應該在草紙上簡單标注一下 導緻吃個飯回來再寫就忘了

下次應該嘗試用Bit的Hash來做。

#include <iostream>
#include <cstdio>
#include <cstring>

#include <cmath>

using namespace std;

int flag[3001];

int main()
{
	int nums, num, before, now, minus, i, j, judge, n;
	while (cin>>nums)
	{
		n =nums;
		judge = 0;
		memset(flag, 0, sizeof(flag));
		now = before = 0;
		while (n--)
		{
			cin>>num;
			if (before == 0) 
			{
				before = num;
				continue;
			}
			else
			{
				minus = (int)fabs((double)num-(double)before);

				if (flag[minus] == 1)
				{
					judge = 1;
					before = num;
					continue;
				}
				else
				{
					flag[minus] = 1;
					before = num;
				}
			}
		}
		if (judge == 1) cout<<"Not jolly"<<endl;
		else
		{
			for (i=1; i<nums; i++)
			{
				if (flag[i]==0)
				{
					cout<<"Not jolly"<<endl;
					judge = 1;
					break;
				}
			}
			if (judge == 0) cout<<"Jolly"<<endl;
		}
		
	}	
	return 0;
}
           

繼續閱讀