联想算法题-石头剪刀布
问题描述
剪刀石头布是一种常见的猜拳游戏,当玩家人数为两人时,它的规则如下:在每一轮中,双方分别同时给出石头(Rock)、剪刀(Scissor)和布(Paper)这三种手势中的一种。石头战胜剪刀;剪刀战胜布;布战胜石头。若双方给出的手势一样则本轮平局,双方分数不变;否则胜方积1分。
现在Alice和Bob想进行若干轮猜拳游戏,但他们不想逐轮进行游戏,于是决定分别在纸上写下他们每一轮要出的手势。作为裁判的你需要根据他们所写下的手势判断他们的比分是多少。
输入描述
第一行是一个正整数T,表示他们想进行的轮数。
第二行包含T个空格隔开的字符串s_1, s_2, …, s_T,其中s_i表示Alice写下的第i轮要出的手势。
第三行包含T个空格隔开的字符串t_1, t_2, …, t_T,其中t_i表示Bob写下的第i轮要出的手势。
所有的s_i和t_i均是”Rock”,”Scissor”,”Paper”中的一种。
输出描述
输出两个用空格隔开的整数x y,其中x表示Alice的得分,y表示Bob的得分。
输入样例1
3
Rock Rock Rock
Rock Paper Scissor
输出样例1
1 1
数据范围和说明
30%的数据保证:3<=T<=10
80%的数据保证:3<=T<=100
100%的数据保证 :3<=T<=500
算法思路:
这个题的思路模拟,简单的过程模拟
#include<iostream> using namespace std; #include<vector> int main() { int t; cin >> t; vector<string> a; vector<string> b; string str; int res1 = 0; int res2 = 0; for (int i = 0; i < t; ++ i) { cin >> str; a.push_back(str); } for (int i = 0; i < t; ++ i) { cin >> str; b.push_back(str); } for (int i = 0; i < t; ++ i) { if (a[i] == b[i]) continue; else if (a[i] == "Rock" && b[i] == "Paper") res2 ++; else if (a[i] == "Scissor" && b[i] == "Rock") res2 ++; else if (a[i] == "Paper" && b[i] == "Scissor") res2 ++; else res1 ++; } cout << res1 << " " << res2; return 0; }