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;
}



posted @ 2020-10-21 20:55  罪梦者  阅读(878)  评论(0)    收藏  举报