#include <cstdio>
int change(char c){
if(c=='B') return 0;
if(c=='C') return 1;
if(c=='J') return 2;
}
int main(){
int T;
char c1,c2;
scanf("%d",&T);
int a[3]={0},b[3]={0};
//记录赢得多的次数的手势
int handa[3]={0},handb[3]={0};
char mp[3]={'B','C','J'};
for(int i=0;i<T;i++){
getchar();
scanf("%c %c",&c1,&c2);
int k1 = change(c1);
int k2 = change(c2);
if((k1+1)%3==k2){
a[0]++; b[2]++;
//记录甲靠k1赢的次数
handa[k1]++;
}else if(k1==k2){
a[1]++;b[1]++;
}else {
b[0]++;a[2]++;
handb[k2]++;
}
}
printf("%d %d %d\n",a[0],a[1],a[2]);
printf("%d %d %d\n",b[0],b[1],b[2]);
int id1=0,id2=0;
for(int i=0;i<3;i++){
if(handa[i]>handa[id1]) id1 =i;
if(handb[i]>handb[id2]) id2 =i;
}
printf("%c %c",mp[id1],mp[id2]);//注意这里输出的是字符
return 0;
}
题意: C锤子 B布 J剪刀
思路:1 将B C J 按字典序排序 用0 1 2 代替更为方便 写一个change函数 将手势对应到数字。
(布0胜锤子1 锤子1胜剪刀2 剪刀2胜锤子0 )
2. 每次读入后将手势转换为对应数字k1 k2 然后k1胜k2的条件是 (k1+1)%3==k2 平的条件k1==k2 负的条件(k2+1)%3=2
3. 记录 用数组 要不六个每个都定义好麻烦。。a[0] 甲胜 a[1] 甲平 a[2] 甲负
注意: 数组不要三个数就定义2 要定义3 不然最后一个数就怪怪的 还有每个循环的条件第一遍就要好好检查 不然检查的时候查不出来
getchar超级重要 吸引换行和空格
题意: C锤子 B布 J剪刀