御膳房要准备皇帝的早餐,非常的辛苦。辛苦是因为这个皇帝很挑剔,要求相邻两天不能吃相同的早餐。根据采买到的原料,御膳房准备了未来几天的早餐的菜单。但是厨师不懂数学,排出的菜单有相邻两天重复的。你能否根据菜单,判断能不能调整成相邻两天不重复的呢?
输入格式:
首先是一个正整数N(1<N<100),表示厨师准备了N天的菜单。
然后是N个正整数Pi(1<Pi<100),每个数字表示一天的早餐内容。相同的数字表示相同的内容。
输出格式:
如果可以调整成相邻两天不重复,就输出
YES
否则就输出
NO
输入样例:
6
1 2 4 6 6 4
输出样例:
YES
我的代码:
/**帽***/
#include <stdio.h>
int getmax(int a[],int k){
int max=0;
for(int i=1;i<100;i++){
if(a[i]>max && i!=k) max=i;
}
return max;
}
int main(){
int n,a[100]={0};
scanf("%d",&n);
int i,k,max=0;
for(i=0;i<n;i++){
scanf("%d",&k);
a[k]++;
max=(a[k]>max)?k:max;
}
for(i=0;i<n;i++){
if(max!=0){
a[max]--;
max=getmax(a,max);//找到除了max之外最大的那个
}else{
printf("NO");
return 0;
}//如果在这里面就已经等于0,那完蛋了
}
if(max==0) printf("YES");
else printf("NO");
return 0;
}
就,还挺简单