思路:
1.将B C J按照字典序转换成数字,依次对应0 1 2,
2.根据B胜C,C胜J,J胜B,假设甲乙的手势转换成对应的数字是k1,k2,则甲胜的条件是:(k1+1)%3= = k2 ,乙胜的条件是:(k2+1)%3== k1,平局条件是:k1==k2;
3.判断甲乙获胜次数最多的手势,可以利用变量id1,id2记录次数最多手势所对应的数组序号
C++代码:
#include<cstdio>
#include<algorithm>
using namespace std;
int change(char c){
if(c=='B') return 0;
if(c=='C') return 1;
if(c=='J') return 2;
}
int main(){
char mp[3]={'B','C','J'};
int n;
scanf("%d",&n);
int A[3]={0},B[3]={0};
int handA[3]={0},handB[3]={0};
char c1,c2;
int k1,k2;
for(int i=0;i<n;i++){
getchar();
scanf("%c %c",&c1,&c2);
k1=change(c1);
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;
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;
}