7-77 御膳房 (5分)

御膳房要准备皇帝的早餐,非常的辛苦。辛苦是因为这个皇帝很挑剔,要求相邻两天不能吃相同的早餐。根据采买到的原料,御膳房准备了未来几天的早餐的菜单。但是厨师不懂数学,排出的菜单有相邻两天重复的。你能否根据菜单,判断能不能调整成相邻两天不重复的呢?

输入格式:

首先是一个正整数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;
}

就,还挺简单

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值