注意点
- 常用 char map[3]={‘B’,‘C’,‘J’};把字符用数组形式一一对应,方便处理和输出
- getchar()用来吸收scanf("%d",&N);产生的换行符,否则scanf("%c %c",&c1,&c2);中%c会读入该换行符,导致程序出错
#include <bits/stdc++.h>
using namespace std;
int change(char c){
if(c=='B') return 0;
if(c=='C') return 1;
return 2;
}
int main(){
int N;
scanf("%d",&N);
int A[3]={0},B[3]={0};//记录甲、乙的胜、负、平的次数
int handA[3]={0},handB[3]={0};
while(N--){
getchar();
char c1,c2;
scanf("%c %c",&c1,&c2);
int k1=change(c1);
int k2=change(c2);
if((k1+1)%3==k2){//说明甲赢了
A[0]++;
B[2]++;
handA[k1]++;
}else if(k1==k2){//平局
A[1]++;
B[1]++;
}else{//否则乙赢
A[2]++;
B[0]++;
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;
char map[3]={'B','C','J'};
for(int i=1;i<3;i++){
if(handA[i]>handA[id1])id1=i;
if(handB[i]>handB[id2])id2=i;
}
printf("%c %c\n",map[id1],map[id2]);
return 0;
}