牛客網PAT乙級第八題,錘子剪刀布,題目描述大致如下:
輸入第一行正整數N(N<=105),代表交鋒次數,接下來N行輸入交鋒信息,格式"甲 乙",C代表錘子,B代表布,J代表剪刀。
輸出第1,2行分別給出甲和乙的勝,負,平的次數,數字間空格分離,第三行給出兩個字母,代表甲和乙獲勝次數最多的手勢。
空格分隔,如果解不唯一,輸出字母序最小的解。
代碼如下:
#include <iostream>
using namespace std;
char FindVictoryWay(int shitou, int jiandao, int bu)
{
if (shitou > jiandao)
{
if (bu >= shitou)
{
return 'B';
}
else
{
return 'C';
}
}
else if (shitou == jiandao)
{
if (shitou > bu)
{
return 'C';
}
else
{
return 'B';
}
}
else
{
if (jiandao > bu)
{
return 'J';
}
else
{
return 'B';
}
}
}
int main()
{
int N;//交鋒次數
char a_result, b_result;
int a_victory = 0, a_ping = 0, b_victory = 0;
int a_shitou = 0, a_jiandao = 0, a_bu = 0, b_shitou = 0, b_jiandao = 0, b_bu = 0;
char a_winmost, b_winmost;
while (cin >> N)
{
for (int i = 0; i < N; i++)
{
cin >> a_result >> b_result;
if (a_result == b_result)
{
a_ping++;
}
else if (((a_result == 'C') && (b_result == 'J')) || ((a_result == 'B') && (b_result = 'C')) || ((a_result == 'J') && (b_result == 'B')))
{
a_victory++;
switch (a_result)
{
case 'C':
a_shitou++;
break;
case 'J':
a_jiandao++;
break;
case 'B':
a_bu++;
break;
default:
break;
}
}
else
{
b_victory++;
switch (b_result)
{
case 'C':
b_shitou++;
break;
case 'J':
b_jiandao++;
break;
case 'B':
b_bu++;
break;
default:
break;
}
}
}
a_winmost = FindVictoryWay(a_shitou, a_jiandao, a_bu);
b_winmost = FindVictoryWay(b_shitou, b_jiandao, b_bu);
cout << a_victory << " " << a_ping << " " << b_victory << endl;
cout << b_victory << " " << a_ping << " " << a_victory << endl;
cout << a_winmost << " " << b_winmost << endl;
}
return 0;
}