从零起步看算法(第十二天 4.17)
题外话:昨晚想了一些其他的事,有些生活的残酷你注定要去旁观,而无法避免。伤害,或许是一种宿命,你能做的就是让悲痛成为财富而已。
//q13 HZF 爱斗牛
思路很简单的一道题,但注意的知识点还是有的。
1.对 unique(a,a+n)的深入认识,只是隐藏了原来的数组的相同的值,改变了顺序而已
https://blog.csdn.net/tomorrowtodie/article/details/51907471
2.对于情况少的判断,枚举法很有效。
3.对题意细节的理解,对牌类游戏题型的小积累,小主意。
贴代码:
//q13 HZF 爱斗牛
#include<iostream>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
bool is_three(int a[]){
if((a[0]+a[1]+a[2])%10==0)return true;
if((a[0]+a[1]+a[3])%10==0)return true;
if((a[0]+a[1]+a[4])%10==0)return true;
if((a[0]+a[2]+a[3])%10==0)return true;
if((a[0]+a[2]+a[4])%10==0)return true;
if((a[0]+a[3]+a[4])%10==0)return true;
if((a[1]+a[2]+a[3])%10==0)return true;
if((a[1]+a[2]+a[4])%10==0)return true;
if((a[1]+a[3]+a[4])%10==0)return true;
if((a[2]+a[3]+a[4])%10==0)return true;
else return false;
}
int main(){
int a[5]={0};
int sum=0;
for(int i=0;i<5;i++){
cin>>a[i];
if(a[i]==11)a[i]=10;
if(a[i]==12)a[i]=10;
if(a[i]==13)a[i]=10;
sum+=a[i];
}
sort(a,a+5);
int k=unique(a,a+5)-a;
if(k<=2&&a[1]==a[2]&&a[2]==a[3]){
cout<<"quadra bomb orz"<<endl;
return 0;
}
if(k<=2&&a[0]==a[2]&&a[2]==a[3]){
cout<<"quadra bomb orz"<<endl;
return 0;
}
if(a[4]<5&&sum<=10){
cout<<"penta calf"<<endl;
return 0;
}
if(is_three(a)&&sum%10==0){
cout<<"you can you up"<<endl;
return 0;
}
if(is_three(a)){
cout<<"too young too simple:calf "<<sum%10<<endl;
return 0;
}
else
cout<<"gg"<<endl;
return 0;
}