1018 锤子剪刀布 (20 分)

题目:1018 锤子剪刀布 (20 分)

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

FigCJB.jpg

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

输入格式:

输入第 1 行给出正整数 N(105​​),即双方交锋的次数。随后 N 行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C 代表“锤子”、J 代表“剪刀”、B 代表“布”,第 1 个字母代表甲方,第 2 个代表乙方,中间有 1 个空格。

输出格式:

输出第 1、2 行分别给出甲、乙的胜、平、负次数,数字间以 1 个空格分隔。第 3 行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有 1 个空格。如果解不唯一,则输出按字母序最小的解。

输入样例:

10
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J

输出样例:

5 3 2
2 3 5
B B

思路:

  • 枚举一下结果,然后按要求输出。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 #include <sstream>
 5 #include <cmath>
 6 #include <algorithm>
 7 #include <string>
 8 #include <stack>
 9 #include <queue>
10 #include <vector>
11 #include <map>
12 using namespace std;
13 
14 int main()
15 {
16     int win = 0, p = 0, fu = 0;
17     int c1 = 0, b1 = 0, j1 = 0;
18     int c2 = 0, b2 = 0, j2 = 0;
19     char a, b;
20     int n;
21     scanf("%d", &n);
22     while(n--)
23     {
24         cin >> a >> b;
25         if(a == 'C' && b == 'J')
26         {
27             win++;
28             c1++;
29         }
30         else if(a == 'J' && b == 'C')
31         {
32             fu++;
33             c2++;
34         }
35         else if(a == 'J' && b == 'B')
36         {
37             win++;
38             j1++;
39         }
40         else if(a == 'B' && b == 'J')
41         {
42             fu++;
43             j2++;
44         }
45         else if(a == 'B' && b == 'C')
46         {
47             win++;
48             b1++;
49         }    
50         else if(a == 'C' && b == 'B')
51         {
52             fu++;
53             b2++;
54         }            
55         else if(a == b)
56             p++;
57     }
58     printf("%d %d %d\n", win, p, fu);
59     printf("%d %d %d\n", fu, p, win);
60     int max1 = max(c1, max(b1, j1));
61     int max2 = max(c2, max(b2, j2));
62     if(max1 == b1)
63         printf("B ");
64     else if(max1 == c1)
65         printf("C ");
66     else if(max1 == j1)
67         printf("J ");
68     if(max2 == b2)
69         printf("B");
70     else if(max2 == c2)
71         printf("C");
72     else if(max2 == j2)
73         printf("J");
74     return 0;
75 }

 

总结:

  如果想要符合某个if条件后不在进入其他语句进行判断,就不能用连续的if,而应当if和else if连用。

posted @ 2019-07-24 19:20  Anzer  阅读(269)  评论(0编辑  收藏  举报