本题采用了简单if语句来进行判断输赢
#include<stdio.h>
#include <stdlib.h>
#include <iostream>
#include<string>
#include <map>
#include<math.h>
using namespace std;
int main() {
int n;
cin >> n;
char p, q;
int ping1=0,ping2 = 0;
int win1 = 0, win2 = 0, fail1 = 0, fail2 = 0;
int win1c = 0, win1j = 0, win1b = 0;
int win2c = 0, win2j = 0, win2b = 0;
map<char, int>a;
a['C'] = 1;a['J'] = 2;a['B'] = 3;//c石头j剪刀b是布
for (int i = 0;i < n;i++) {
cin >> p >> q;
if (a[p] == a[q]) {
ping1++;ping2++;
continue;
}
if ((a[p] == 1 && a[q] == 2)|| (a[p] == 2 && a[q] == 3) || (a[p] == 3 && a[q] == 1)) {
win1++;fail2++;
if (a[p] == 1)
win1c++;
if (a[p] == 2)
win1j++;
if (a[p] == 3)
win1b++;
continue;
}
else {
win2++;fail1++;
if (a[q] == 1)
win2c++;
if (a[q] == 2)
win2j++;
if (a[q] == 3)
win2b++;
}
}
cout << win1 << " " << ping1 << " " << fail1<<endl;
cout << win2 << " " << ping1 << " " << fail2<<endl;
if (win1b >= win1c && win1b >= win1j)
cout << 'B' << " ";
if (win1c > win1b && win1c >= win1j)
cout << 'C' << " ";
if (win1j > win1b && win1j > win1c)
cout << 'J' << " ";
if (win2b >= win2c && win2b >= win2j)
cout << 'B';
if (win2c > win2b && win2c >= win2j)
cout << 'C';
if (win2j > win2b && win2j > win2c)
cout << 'J';
}