一道简单的题目 学到一点东西 感觉剪枝就是找bug 挺爽的
// 做这种题目的时候,一定要细心 1.注意数据的取值2.正负号问题 3.开始和结尾的值的大小 #include<stdio.h> #include<string.h> #define max 3007 long long num[max]; long long check[max]; int main() { long long ans; long long start; int len; int flag; while(scanf("%d",&len)!=EOF) { memset(num,0,sizeof(num)); flag=0; scanf("%lld",&start); for(int i=1;i<len;i++) { scanf("%lld",&check[i]); ans=start-check[i]; start=check[i]; if(ans<0&&flag==0) { if(-ans>=len) { flag=1; continue; } num[-ans]=1; } else if(ans>0&&flag==0) { if(ans>=len) { flag=1; continue; } num[ans]=1; } } if(flag==0) { for(int i=1;i<len;i++) if(num[i]==0) { flag=1; break; } } if(flag) printf("Not jolly\n"); else printf("Jolly\n"); } return 0; }