题目描述:
现在有一个手机的棋牌游戏很火,希望你能还原这个游戏;
游戏规则:每个人有5张牌,从中选三张牌加起来是10的倍数,即为有牛,否则,视为无牛,(J,Q,K记为10),然后比较剩下两张牌对10求余的大小;
输入:
输入5个数字,A,J,Q,K用字母表示,数字间用‘,’表示;
输出:
输出牛数,无牛和错误输出none
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int cton(char c){
int n;
if(c=='A') return 1;
else if(c=='2') return 2;
else if(c=='3') return 3;
else if(c=='4') return 4;
else if(c=='5') return 5;
else if(c=='6') return 6;
else if(c=='7') return 7;
else if(c=='8') return 8;
else if(c=='9') return 9;
else if(c=='10') return 10;
else if(c=='J') return 10;
else if(c=='Q') return 10;
else if(c=='K') return 10;
}
int a[10];
int s[200];
char b[200];
char c[10];
int main(){
while(gets(b)!=NULL){
int L=0;
int len=strlen(b);
for(int i=0;i<len;i++){
if(b[i]!=','&&b[i]!=' '){
c[L++]=b[i];
}
}
int flag=0;
if(L>5){
flag=1;
}
memset(s,0,sizeof(s));
for(int i=0;i<5;i++){
s[c[i]]++;
}
for(int i=0;i<200;i++){
if(s[i]>4){
flag=1;
}
}
for(int i=0;i<5;i++){
a[i]=cton(c[i]);
}
int m,ma=-1;
for(int i=0;i<5;i++){
for(int j=i+1;j<5;j++){
for(int k=j+1;k<5;k++){
if((a[i]+a[j]+a[k])%10==0){
m=0;
for(int l=0;l<5;l++){
if(l!=i&&l!=j&&l!=k){
m+=a[l];
}
}
ma=max(ma,m%10);
}
}
}
}
if(ma==0){
printf("10\n");
}
else if(ma==-1||flag){
printf("none\n");
}
else{
printf("%d\n",ma);
}
}
return 0;
}