1018 锤子剪刀布
Statement
Metadata
- 作者: CHEN, Yue
- 单位: 浙江大学
- 代码长度限制: 16 KB
- 时间限制: 200 ms
- 内存限制: 64 MB
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式
输入第 1 行给出正整数 C
代表“锤子”、J
代表“剪刀”、B
代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。
输出格式
输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。
输入样例
输出样例
Solution
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, i, j, win = 0, def = 0, ave = 0, max[2][3] = {0}, flag1, flag2, max1 = -1, max2 = -1;
char a, b;
string s = "BCJ";
cin >> n;
for (i = 0; i < n; i++) {
scanf(" %c %c", &a, &b);
if ((a == 'C' && b == 'J') || (a == 'J' && b == 'B') || (a == 'B' && b == 'C')) {
win++;
for (j = 0; j < 3; j++)
if (a == s[j])
max[0][j]++;
} else if (a == b)
ave++;
else {
def++;
for (j = 0; j < 3; j++)
if (b == s[j])
max[1][j]++;
}
}
printf("%d %d %d\n", win, ave, def);
printf("%d %d %d\n", def, ave, win);
for (i = 0; i < 3; i++) {
if (max[0][i] > max1) {
max1 = max[0][i];
flag1 = i;
}
if (max[1][i] > max2) {
max2 = max[1][i];
flag2 = i;
}
}
cout << s[flag1] << " " << s[flag2] << endl;
}
Last update: May 4, 2022