石头剪子布
时间限制: 1 Sec 内存限制: 128 MB题目描述
现在有两个人在玩石头剪子布游戏,请你判断最后谁赢了。
用R代表石头,S代表剪子,P代表布。
用R代表石头,S代表剪子,P代表布。
输入
输入的第一行是一个整数t(0<t<1000),表示测试样例的数目。
每组输入样例的第一行是一个整数n(0<n<100),表示游戏次数。
接下来n行,每行由两个字母组成,两个字母之间用一个空格分隔,这些字母只会是R,S或P。
第一个字母表示Player1的选择,第二个字母表示Player2的选择。
每组输入样例的第一行是一个整数n(0<n<100),表示游戏次数。
接下来n行,每行由两个字母组成,两个字母之间用一个空格分隔,这些字母只会是R,S或P。
第一个字母表示Player1的选择,第二个字母表示Player2的选择。
输出
对于每组输入样例,输出获胜方的名字(Player1或Player2),如果平均,则输出TIE。
样例输入
3
2
R P
S R
3
P P
R S
S R
1
P R
样例输出
Player 2
TIE
Player 1
题目不难,但有点坑,用scanf会超时,而cin不会。
代码如下
#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
//scanf("%d",&t);
while(t--)
{
int n;
cin>>n;
//scanf("%d",&n);
int x=0;//计分用,如果第一个人赢就加一分,输就减一分,相同就不加不减
char c1,c2,u,v;
while(n--)
{
cin>>c1>>c2;
//scanf("%c%c%c%c",&u,&c1,&v,&c2);这里如果是用scanf就会超时,虽然我并不知道为什么。
//u用来读取上次输入完时键盘输入的换行符,c1是第一个人出的,v是用来读取中间的空格,c2是第二个人的
/*int w=c1-c2;
if(w==0)continue;
if(w==1||w==2||w==-3)x--;
else x++;*/
//用if判断或者用switch都是可以的
switch(c1-c2)
{
case 1:x--;break;//如果c1和c2的ASCII码相减为1,说明c1是R,c2是P,此时第一个人输
case 2:x--;break;
case 3:x++;break;
case -1:x++;break;
case -2:x++;break;
case -3:x--;break;
case 0:break;
}
}
if(x>0)
cout<<"Player 1\n";
//printf("Player 1\n");
else if(x<0)
cout<<"Player 2\n";
//printf("Player 2\n");
else
cout<<"TIE\n";
//printf("TIE\n");
}
return 0;
}