给你自信
Accept:16 | Submit:55 |
Time Limit:1000MS | Memory Limit:65536KB |
Description
猜拳是一项考人品的游戏,人品差者往往会丢失猜拳的自信。
在小的时候,玩纸片游戏,总要用猜拳来制定先后顺序,为了防止剪刀,石头,布同时出现而浪费时间,于是广大玩家对这样的改进达成了共识——如果同时存在这3种手势,那么算石头输,剪刀与布都算赢,此所谓《石头倒大霉》共识。
现在这道题目就能给你自信,它就有这么神奇!!
现在给出你一个情景,每个情景里有n个人(包括你自己),知道本题的神奇之处在哪里吗?!
它能提前告诉你其他所有玩家分别出的是什么!!!!-_-||
好的,现在你需要足够的自信选择正确的手势而获得胜利……
自信就在眼前!!
Input
多组测试数据
每组数据第一行一个n(2<=n<=10000),表示游戏人数
接下来n-1个字符,表示其它玩家的手势,以一个空格隔开,分别为S(scissors剪刀),R(rock石头),C(clothe布)
当n=1时,表示你太强了,别人的自信都已被你打垮了,现在只有你一个人自娱自乐,输入结束
Output
每组输出一行
包含所有可能胜利的手势,按照S-R-C的顺序输出,中间以一个空格隔开
Sample Input
2
R
3
R S
7
S S S S S S
9
S C S R R C C S
1
Sample Output
C
R C
R
S C
猜拳是一项考人品的游戏,人品差者往往会丢失猜拳的自信。
在小的时候,玩纸片游戏,总要用猜拳来制定先后顺序,为了防止剪刀,石头,布同时出现而浪费时间,于是广大玩家对这样的改进达成了共识——如果同时存在这3种手势,那么算石头输,剪刀与布都算赢,此所谓《石头倒大霉》共识。
现在这道题目就能给你自信,它就有这么神奇!!
现在给出你一个情景,每个情景里有n个人(包括你自己),知道本题的神奇之处在哪里吗?!
它能提前告诉你其他所有玩家分别出的是什么!!!!-_-||
好的,现在你需要足够的自信选择正确的手势而获得胜利……
自信就在眼前!!
Input
多组测试数据
每组数据第一行一个n(2<=n<=10000),表示游戏人数
接下来n-1个字符,表示其它玩家的手势,以一个空格隔开,分别为S(scissors剪刀),R(rock石头),C(clothe布)
当n=1时,表示你太强了,别人的自信都已被你打垮了,现在只有你一个人自娱自乐,输入结束
Output
每组输出一行
包含所有可能胜利的手势,按照S-R-C的顺序输出,中间以一个空格隔开
Sample Input
2
R
3
R S
7
S S S S S S
9
S C S R R C C S
1
Sample Output
C
R C
R
S C
算法分析:这个题有个细节,就是字符串读入时,用 cin 还是 getchar() 区别很大,后者老是WA,前者一提就AC;所以以后字符串使用cin保险些。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 #include<iostream>
2 #include<cstdio>
3 #define N 10010
4
5 using namespace std;
6
7 int flg1,flg2,flg3;
8 char ch[N];
9
10 bool find_1(int n,char t)
11 {
12 int i;
13 for(i=0;i<n;i++)
14 if(t==ch[i])
15 return true;
16 return false;
17 }
18
19 int count_1(int n)
20 {
21 if(find_1(n,'S')) flg1=1;
22 if(find_1(n,'R')) flg2=1;
23 if(find_1(n,'C')) flg3=1;
24 return (flg1+flg2+flg3);
25 }
26
27 int main()
28 {
29 int n,k,i;
30 while(scanf("%d",&n)&&(n>1))
31 {
32 for(i=0;i<n-1;i++)
33 {
34 cin>>ch[i];
35 }
36 k=flg1=flg2=flg3=0;
37 k=count_1(n-1);
38 switch(k)
39 {
40 case 1:
41 {
42 if(flg1) cout<<"R\n";
43 else if(flg2) cout<<"C\n";
44 else if(flg3) cout<<"S\n";
45 break;
46 }
47 case 2:
48 {
49 if(!flg1) cout<<"S C\n";
50 else if(!flg2)cout<<"S\n";
51 else if(!flg3)cout<<"R C\n";
52 break;
53 }
54 case 3:
55 {
56 cout<<"S C\n";break;
57 }
58 }
59 }
60 return 0;
61 }