ZOJ-1879 出现且只出现一次

1879:给出1~n之间n个数。如果相邻两数差值1~n-1都出现过则为jolly jumper.如果只有一个数则也为jolly jumper

思路:用map实现。
一开始在代码中有break,发现不符立即跳出。后来发现没将值读完造成后面混乱。
abs函数在stdlib中,一开始写math也WA了。。。。。⊙﹏⊙b汗

#include<stdio.h>
#include<stdlib.h>
#include<map>
#include<iostream>
using namespace std;

int main()
{
	int n;
	int prev;
	int curr;
	int ab;
	map<int,int> m;
	bool isjolly;

	while(cin>>n)
	{
		m.clear();
		isjolly=true;
		for(int i=0;i<n;i++)
		{
			cin>>curr;
			if(i!=0)
			{
				ab=abs(prev-curr);
				m[ab]++;
				if(m[ab]!=1||ab>n-1||ab==0)
				{
					isjolly=false;
				}	
			}
			prev=curr;
		}
		if(isjolly)
			cout<<"Jolly"<<endl;
		else
			cout<<"Not jolly"<<endl;
	}

}

你可能感兴趣的:(ZOJ)