sdnuacm 1108
poj 2575
Description
A sequence of
n > 0 integers is called a
happy luguan if the absolute values of the difference between successive elements take on all the values 1 through
n-1. For instance,
1 4 2 3
is a happy luguan, because the absolutes differences are 3, 2, and 1 respectively. The definition implies that any sequence of a single integer is a happy luguan. You are to write a program to determine whether or not each of a number of sequences is a happy luguan.
1 4 2 3
is a happy luguan, because the absolutes differences are 3, 2, and 1 respectively. The definition implies that any sequence of a single integer is a happy luguan. You are to write a program to determine whether or not each of a number of sequences is a happy luguan.
Input
Each line of input contains an integer
n <= 3000 followed by
n integers representing the sequence.
Output
For each line of input, generate a line of output saying "Happy luguan" or "Not happy luguan".
Sample Input
4 1 4 2 3
5 1 4 2 -1 6
Sample Output
Happy luguan
Not happy luguan
很简单,判断数列中的相邻的两个数的差的绝对值是否是1,2····n-1。
我们可以用所做的差做一个数组的下标,并将其设为一固定的值最后检查一下就可以啦
以下为代码:
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <vector>
#include <iterator>
#include <cmath>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int di[3002];
int main()
{
int n,x,y;
int ch;
while(scanf("%d",&n)!=EOF)
{
ch=1;
memset(di,0,sizeof(di));
if(n==1)
{
scanf("%d",&x);
printf("Happy luguan\n");
continue;
}
scanf("%d",&x);
for(int i=1; i<n; i++)
{
scanf("%d",&y);
int te=abs(y-x);
di[te]=1;
x=y;
}
int j;
for( j=1; j<n; j++)
{
if(di[j]==0)
ch=0;
}
if(ch==1)
{
printf("Happy luguan\n");
}
else
printf("Not happy luguan\n");
}
}