PAT (Basic Level) 1018 锤子剪刀布

题意

剪刀石头布下的信息统计,题意就不赘述了。

思路

模拟即可。想了不少时间想怎么才能把这题写简洁,最后写出来的代码如下,应该还不错哦。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	vector<char> revmp = {'B', 'C', 'J'};
	map<char, int> mp; mp['B'] = 0; mp['C'] = 1; mp['J'] = 2;
	int n;
	cin >> n;
	vector<int> ans1(3), ans2(3);// 0 win, 1 draw, 2 lose
	vector<int> win1(3), win2(3);// 0 USE B WIN, 1 ...
	for (int i = 0; i < n; ++i) {
		char a, b;
		cin >> a >> b;
		if (a == b) ans1[1]++, ans2[1]++;
		if ((mp[a] + 1) % 3 == mp[b]) win1[mp[a]]++, ans1[0]++, ans2[2]++;
		if ((mp[b] + 1) % 3 == mp[a]) win2[mp[b]]++, ans1[2]++, ans2[0]++; 
	}
	cout << ans1[0] << ' ' << ans1[1] << ' ' << ans1[2] << '\n';
	cout << ans2[0] << ' ' << ans2[1] << ' ' << ans2[2] << '\n';
	cout << revmp[max_element(win1.begin(), win1.end()) - win1.begin()] << ' ';
	cout << revmp[max_element(win2.begin(), win2.end()) - win2.begin()] << '\n';
	return 0;
} 	

HINT

不定时更新更多题解,Basic Level 全部AC代码,详见 link ! ! !

发布了31 篇原创文章 · 获赞 15 · 访问量 763

猜你喜欢

转载自blog.csdn.net/abcdefbrhdb/article/details/104564243