7-77 御膳房 (5分)
7-77 御膳房 (5分)
御膳房要准备皇帝的早餐,非常的辛苦。辛苦是因为这个皇帝很挑剔,要求相邻两天不能吃相同的早餐。根据采买到的原料,御膳房准备了未来几天的早餐的菜单。但是厨师不懂数学,排出的菜单有相邻两天重复的。你能否根据菜单,判断能不能调整成相邻两天不重复的呢?
输入格式:
首先是一个正整数N(1<N<100),表示厨师准备了N天的菜单。 然后是N个正整数Pi(1<Pi<100),每个数字表示一天的早餐内容。相同的数字表示相同的内容。
输出格式:
如果可以调整成相邻两天不重复,就输出
YES
否则就输出
NO
输入样例:
6
1 2 4 6 6 4
输出样例:
YES
代码解析:这道题实质上是一道组合数学的题,要先想想什么时候是临界,就是最多重复的个数不能超过总个数一半加一,
举一个例子比如 1 1 1 1 1 有五个重复的中间最多有4个空,所以是小于等于n/2+1 就可以插入了。就说明一定有。
#include<stdio.h>
int main()
{
int n;
int a[100]={0};
scanf("%d",&n);
int k;
int i;
for(i=0;i<n;i++)
{
scanf("%d",&k);
a[k]++;
}
k=0;
for(i=0;i<n;i++)
{
if(a[i]>k)
{
k=a[i];
}
}
if(k<=n/2+1)
printf("YES\n");
else
printf("NO\n");
return 0;
}