思路在代码中已经注释。
#include<iostream>
using namespace std;
const int Maxn = 100101;
int N;
char dataMat[Maxn][2];
int hCJB[2][3]; //用于存储甲乙胜利时所出的牌
int hc1[2][3]; //用来存储甲乙的胜、平、分数量
int getValue(char a, char b){
if(a == 'C' && b == 'J'){ //甲锤子胜乙剪刀返回1
return 1;
}
else if(a == 'J' && b == 'C'){ //乙锤子胜甲剪刀返回-1
return -1;
}
else if(a == 'C' && b == 'B'){ //乙布胜甲锤返回-2
return -2;
}
else if(a == 'B' && b =='C'){ //甲布胜乙锤返回2
return 2;
}
else if(a == 'J' && b == 'B'){ //甲剪刀胜乙布返回3
return 3;
}
else if(a == 'B' && b == 'J'){ //乙剪刀胜甲布返回-3
return -3;
}
else{ //如果两人的出法一样,那么返回0
return 0;
}
}
int main(){
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
hc1[i][j] = 0; //将他们都初始化为0;
hCJB[i][j] = 0;
}
}
cin>>N; //输入次数
for(int i=0;i<N;i++){
cin>>dataMat[i][0]>>dataMat[i][1]; //将甲乙的对局结果记录下来
}
for(int i=0;i<N;i++){ //遍历记录下来的对局结果
int flag = getValue(dataMat[i][0], dataMat[i][1]);
if(flag == 1 || flag == 2 || flag == 3){ //返回1,2,3说明甲胜利
hc1[0][0]++; //甲方胜利加一
hc1[1][2]++; //乙方失败加一
if(dataMat[i][0] == 'C'){ //判断甲方出的什么牌而获取的胜利,将其记录下来
hCJB[0][1] += 1; //出锤子
}
else if(dataMat[i][0] == 'J'){ //出剪刀
hCJB[0][2] += 1;
}
else{ //出布
hCJB[0][0] += 1;
}
}
else if(flag == -1 || flag == -2 || flag == -3){ //返回-1,-2,-3时乙方胜利
hc1[1][0]++; //乙方胜利加一
hc1[0][2]++; //甲方胜利加一
if(dataMat[i][1] == 'C'){ //判断乙方是出什么牌而获取胜利,将其记录下来
hCJB[1][1] += 1; //出锤
}
else if(dataMat[i][1] == 'J'){ //出剪刀
hCJB[1][2] += 1;
}
else{
hCJB[1][0] += 1; //出布
}
}
else{ //如果甲乙出牌相同,那么谁也不获胜,甲乙平局都加一
hc1[0][1]++;
hc1[1][1]++;
}
}
for(int i=0;i<2;i++){ //遍历输出甲乙的得分情况
for(int j=0;j<2;j++){
cout<<hc1[i][j]<<" ";
}
cout<<hc1[i][2]<<endl;
}
int max = -1; //遍历查找甲乙胜利时使用的最多的牌的下标,然后根据下标判断输出这张牌
int index = -1; //在记录甲乙胜利使用的牌时,已经按照字典序 B C J排序好了,所以找到下标直接判断输出即可。
for(int i = 0;i<3;i++){
if(hCJB[0][i] > max){
max = hCJB[0][i];
index = i;
}
}
if(index == 0){ //判断下标
cout<<'B'<<" ";
}
else if(index == 1){
cout<<'C'<<" ";
}
else{
cout<<'J'<<" ";
}
max = -1; //如上所述思路和做法完全相同
index = -1;
for(int i = 0;i<3;i++){
if(hCJB[1][i] > max){
max = hCJB[1][i];
index = i;
}
}
if(index == 0){
cout<<'B';
}
else if(index == 1){
cout<<'C';
}
else{
cout<<'J';
}
}
运行结果:
菜鸡的成长之路,欢迎大佬指正错误。