bupt327 给你自信

给你自信
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

算法分析:这个题有个细节,就是字符串读入时,用 cin 还是 getchar()  区别很大,后者老是WA,前者一提就AC;所以以后字符串使用cin保险些。

View Code
 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 }

 

转载于:https://www.cnblogs.com/zhourongqing/archive/2012/03/03/2378206.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值