思路:
这是一个繁杂的纯粹模拟题,甚至算法里面连循环都不用,唯一的for语句是因为要处理n次。
我选择使用两个嵌套的switch语句来模拟每一种情况,然后把该记录的东西都记录下来,也没有什么边界情况需要考虑,仔细。
代码:
#include<iostream>
using namespace std;
int num[3] = { 0 };
int jia[3] = { 0 }, yi[3] = { 0 };
char str[3] = { 'B', 'C', 'J' };
int main()
{
char a, b;
int n, i, max = 0;
cin >> n;
for (i = 0; i < n; i++)
{
cin >> a >> b;
switch (a)
{
case 'B':
switch (b)
{
case 'B':
num[1]++;
break;
case 'C':
num[0]++;
jia[0]++;
break;
case 'J':
num[2]++;
yi[2]++;
break;
default:
break;
}
break;
case 'C':
switch (b)
{
case 'B':
num[2]++;
yi[0]++;
break;
case 'C':
num[1]++;
break;
case 'J':
num[0]++;
jia[1]++;
break;
default:
break;
}
break;
case 'J':
switch (b)
{
case 'B':
num[0]++;
jia[2]++;
break;
case 'C':
num[2]++;
yi[1]++;
break;
case 'J':
num[1]++;
break;
default:
break;
}
break;
default:
break;
}
}
cout << num[0] << " " << num[1] << " " << num[2] << "\n";
cout << num[2] << " " << num[1] << " " << num[0] << "\n";
max = 0;
if (jia[1] > jia[max])
max = 1;
if (jia[2] > jia[max])
max = 2;
cout << str[max] << " ";
max = 0;
if (yi[1] > yi[max])
max = 1;
if (yi[2] > yi[max])
max = 2;
cout << str[max];
//while (1)
//{
//}
return 0;
}