题意
石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代逐渐风靡世界。
蒜头君和花椰妹喜欢玩石头剪子布,他们俩玩了 n n n 局游戏,他们把每局情况记在了纸上,但由于 n n n 很大很大,所以他们不知道谁赢的次数的更多,现在求助于你,请你编程计算最终谁获胜。
Input
第一行一个整数 n ( 1 ≤ n ≤ 100 ) n\ (1\le n\le 100) n (1≤n≤100)。
接下来 n n n 行,每行两个字母,分别表示蒜头君和花椰妹在这局的情况,其中’S’表示石头,'J’表示剪刀,'B’表示布。
Output
如果蒜头君赢的次数更多,输出"suantou";如果花椰妹赢的次数更多,输出"huaye";如果赢的次数一样多,输出"QAQ"。
顺次输出关闭的灯的编号,其间用逗号间隔。
输入样例
3
J S
S S
B J
输出样例
huaye
提示
分析
- 题目分析
题目比较清晰,在解决过程中需要想的就是如何让计算机来判断三种出拳彼此之间的关系。显然这三种状态之间的关系是环形的,这其实不是很好实现,所以我用数值和它们的差来模拟各种情况。
总结
- 一直试图简化猜拳状态,但是还是🈚️果,仍然选择了感觉比较弱智的暴力解法
代码
//
// main.cpp
// lab5
//
//
#include <iostream>
#include <map>
using namespace std;
int player[2] = {0,0};
map<char,int> cmp;
int main()
{
int n = 0;
char a,b;
cin>>n;
cmp['S'] = 2; //s>j>b ; b>s
cmp['J'] = 1;
cmp['B'] = 0;
for( int i = 0 ; i < n ; i++ )
{
cin>>a>>b;
if( a != b )
{
//s;j j;b b;s
if( cmp[a] - cmp[b] == 1 || cmp[a] - cmp[b] == -2 )
player[0]++;
else //j;s b;j s;b
player[1]++;
}
}
if( player[0] == player[1] )
cout<<"QAQ"<<endl;
else if( player[0] > player[1] )
cout<<"suantou"<<endl;
else
cout<<"huaye"<<endl;
return 0;
}