题目链接
- 统计每个人的胜平负的次数,这个很简单。
- 统计每个人出什么赢的概率最大,就是统计出每个人出什么赢的次数最多。比如出剪刀和锤子赢得次数最多,都赢了三次,那么久按字母表排序,输出C。
- C++不想重构了,心累。
C++代码
#include <iostream>
#include<string>
#include<vector>
#include<queue>
#include<map>
#include <algorithm>
using namespace std;
int judge(char a, char b) {
if (a == b)
return 0;
else if (a == 'C'&&b == 'J')
return 1;
else if (a == 'C'&&b == 'B')
return -1;
else if (a == 'J'&&b == 'B')
return 1;
else if (a == 'J'&&b == 'C')
return -1;
else if (a == 'B'&& b == 'C')
return 1;
else
return -1;
}
int main() {
map<char, int> jia_map;
map<char, int>yi_map;
int n;
char a, b;
int res[3] = { 0 };
int jia[3] = { 0 };
int yi[3] = { 0 };
cin >> n;
while (n--) {
cin >> a >> b;
if (judge(a, b) == 0) {
res[1]++;
}
else if (judge(a, b) == 1) {
res[0]++;
jia_map[a]++;
}
else {
res[2]++;
yi_map[b]++;
}
}
cout << res[0] << " " << res[1] << " " << res[2] << endl;
cout << res[2] << " " << res[1] << " " << res[0] << endl;
int max = -1;
for (auto it = jia_map.begin(); it != jia_map.end(); it++) {
if (it->second > max) {
max = it->second;
a = it->first;
}
}
max = -1;
for (auto it = yi_map.begin(); it != yi_map.end(); it++) {
if (it->second > max) {
max = it->second;
b = it->first;
}
}
cout << a << " " << b << endl;
return 0;
}
python3 代码
def main():
n = int(input())
jia_win = 0
yi_win = 0
jia = {'B':0,'C':0,'J':0}
yi = {'B':0,'C':0,'J':0}
for i in range(n):
s = input()
if(s == "J B"):
jia_win+=1
jia['J'] += 1
elif(s=="C J"):
jia_win += 1
jia['C'] += 1
elif(s == "B C"):
jia_win += 1
jia['B'] += 1
elif(s == "J C"):
yi_win += 1
yi['C'] += 1
elif(s == "C B"):
yi_win += 1
yi['B'] += 1
elif(s == "B J"):
yi_win += 1
yi['J'] += 1
print('{} {} {}'.format(jia_win,n-jia_win-yi_win,yi_win))
print('{} {} {}'.format(yi_win,n - jia_win - yi_win, jia_win))
jia_max_win = 'C' if(jia['C'] > jia['B']) else 'B'
jia_max_win = 'J' if(jia['J'] > jia[jia_max_win]) else jia_max_win
yi_max_win = 'C' if (yi['C'] > yi['B']) else 'B'
yi_max_win = 'J' if (yi['J'] > yi[yi_max_win]) else yi_max_win
print('{} {}'.format(jia_max_win,yi_max_win))
main()