本题最开始是对怎么存储数据进行疑惑,在搜别人代码后,对进行设置a,b数组进行存储(现在想想发现不用数组也可以,单纯的用a,b)。然后记录甲赢输平的次数即可,然后每一次都记录获胜的是那个手势,最后按照输出规则进行输出即可。
别人的思路:
完整的代码如下:
#include<iostream>
#include<map>
using namespace std;
int main() {
int n, win = 0, lose = 0, ping = 0;
int c1 = 0, b1 = 0, j1 = 0, c2 = 0, b2 = 0, j2 = 0;
cin >> n;
char a[100010], b[100010];
for (int i = 0; i < n; i++) {
getchar();
cin >> a[i] >> b[i];
if ((a[i] == 'C'&&b[i] == 'J') || (a[i] == 'B'&&b[i] == 'C') || (a[i] == 'J'&&b[i] == 'B')) {
win++;
if (a[i] == 'C')
c1++;
else if (a[i] == 'B')
b1++;
else
j1++;
}
if (a[i] == b[i])
ping++;
if ((a[i] == 'J'&&b[i] == 'C') || (a[i] == 'C'&&b[i] == 'B') || (a[i] == 'B'&&b[i] == 'J')) {
lose++;
if (b[i] == 'C')
c2++;
else if (b[i] == 'B')
b2++;
else
j2++;
}
}
cout << win << " " << ping << " " << lose << endl;
cout << lose << " " << ping << " " << win << endl;
if (b1 >= c1&&b1 >= j1)cout << "B" << " ";
else if (c1 > b1 && c1 >= j1)cout << "C" << " ";
else cout << "J" << " ";
if (b2 >= c2&&b2 >= j2)cout << "B" << endl;
else if (c2 > b2 && c2 >= j2)cout << "C" << endl;
else cout << "J" << endl;
return 0;
}