#include <iostream>
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
int n; // 输入的样例个数
cin >> n;
char s1, s2;
int jiawin = 0, yiwin = 0; // 记录甲乙赢的次数
int jia[3] = {}; // 定义一个数组 0 1 2分别表示锤头 剪刀 布
int yi[3] = {};
for (int i = 0; i < n; i++)
{
cin >> s1 >> s2; // 直接罗列有胜负的所有情况 简单粗暴且有效
if (s1 == 'C' && s2 == 'J')
{
jiawin++;
jia[0]++;
}
else if (s1 == 'C' && s2 == 'B')
{
yiwin++;
yi[2]++;
}
else if (s1 == 'J' && s2 == 'B')
{
jiawin++;
jia[1]++;
}
else if (s1 == 'J' && s2 == 'C')
{
yiwin++;
yi[0]++;
}
else if (s1 == 'B' && s2 == 'C')
{
jiawin++;
jia[2]++;
}
else if (s1 == 'B' && s2 == 'J')
{
yiwin++;
yi[1];
}
}
cout << jiawin << " " << (n - jiawin - yiwin) << " " << yiwin << endl; // 按格式输出甲乙各自的胜平负情况统计
cout << yiwin << " " << (n - jiawin - yiwin) << " " << jiawin << endl;
int max1 = 0, max2 = 0; // 锤头C剪刀J布B
for (int i = 0; i < 3; i++) // 找到赢的最多的次数
{
if (jia[i] > max1)
{
max1 = jia[i];
}
}
if (max1 == jia[2]) // 如果B是最多的 那么一定输出B 就算有相同的次数 但是按照字母排序 输出的一定也是B
{
cout << "B";
}
else if (max1 == jia[0]) // 当B不是最多的时候 只剩下C J 两种情况 和上面同理
{
cout << "C";
}
else
{
cout << "J";
}
cout << " ";
for (int i = 0; i < 3; i++)
{
if (yi[i] > max2)
{
max2 = yi[i];
}
}
if (max2 == yi[2])
{
cout << "B";
}
else if (max2 == yi[0])
{
cout << "C";
}
else
{
cout << "J";
}
cout << endl;
system("pause");
return 0;
}
并没有完全AC,测试点3答案错误,18分,但我没看出来逻辑漏洞,就这样喽