1018 锤子剪刀布 (20 分)

575 阅读2分钟

题目链接

  1. 统计每个人的胜平负的次数,这个很简单。
  2. 统计每个人出什么赢的概率最大,就是统计出每个人出什么赢的次数最多。比如出剪刀和锤子赢得次数最多,都赢了三次,那么久按字母表排序,输出C。
  3. 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;//返回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()