剪刀石头布胜负统计
题目描述
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入
输出
样例输入
10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J
样例输出
5 3 2
2 3 5
B B
#include <cstdio>
int main(){ //实际提交时,提示输出超限,但本地运行正常,为何???
int n;
char a,b;
fflush(stdin);
while(scanf("%d",&n)!=EOF){
int agood=0,abequal=0,abad=0;
int av[3]={0},bv[3]={0}; //序 B布 C锤 J剪刀;
char s[3]={'B','C','J'};
while(n-->0){
fflush(stdin); //注意该处,必须在之前加上fflush(stdin)以清理缓存 》》因为char类型可以读取任何字符,包括\n \0 以及空格等等,切记,切记
scanf("%c %c",&a,&b);
//printf("%c %c",a,b);
switch(a){
case 'B':
switch(b){
case 'B':
abequal++;
break;
case 'C':
agood++;
av[0]++;
break;
case 'J':
abad++;
bv[2]++;
break;
default:break;
}
break;
case 'C':
switch(b){
case 'B':
abad++;
bv[0]++;
break;
case 'C':
abequal++;
break;
case 'J':
agood++;
av[1]++;
break;
default:break;
}
break;
case 'J':
switch(b){
case 'B':
agood++;
av[2]++;
break;
case 'C':
abad++;
bv[1]++;
break;
case 'J':
abequal++;
break;
default:break;
}
break;
default:break;
}
}
printf("%d %d %d\n",agood,abequal,abad);
printf("%d %d %d\n",abad,abequal,agood);
int am=0,bm=0;
am=(av[0]>=av[1]?0:1);
if(av[am]<av[2])
am=2;
bm=(bv[0]>=bv[1]?0:1);
if(bv[bm]<bv[2])
bm=2;
printf("%c %c\n",s[am],s[bm]);
}
return 0;
}