PAT1018. 锤子剪刀布 (20)

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

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

输入格式:

输入第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<stdio.h>
 2 #include<iostream>
 3 using namespace std;
 4 int winA=0,loseA=0,equall=0;
 5 int Acount[3]={0,0,0};
 6 int Bcount[3]={0,0,0};
 7 void Judge(char A,char B)
 8 {
 9     if(A==B&&B==C)
10     {
11            winA++;
12            Acount[0]++;
13     }
14     else if(A==C&&B==J)
15     {
16         winA++;
17         Acount[1]++;
18     }
19     else if(A==J&&B==B)
20     {
21         winA++;
22         Acount[2]++;
23     }
24     else if(B==B&&A==C)
25     {
26            loseA++;
27            Bcount[0]++;
28     }
29     else if(B==C&&A==J)
30     {
31         loseA++;
32         Bcount[1]++;
33     }
34     else if(B==J&&A==B)
35     {
36         loseA++;
37         Bcount[2]++;
38     }
39     else
40        equall++; 
41 }
42 
43 
44 void Print(int num)
45 {
46     if(num==0)
47       printf("B");
48     else if(num==1)
49       printf("C");
50     else if(num==2)
51       printf("J");
52 }
53 int main(int argc, char** argv) {
54     int N;
55     scanf("%d",&N);
56 
57     while(N--)
58     {
59         char A,B;
60         cin>>A>>B;
61     //    scanf("%c%c",&A,&B);
62         Judge(A,B);
63     }
64     int MostwinA=0,MostwinB=0;
65     if(Acount[0]>=Acount[1]&&Acount[0]>=Acount[2])
66         MostwinA=0;
67     else if(Acount[1]>=Acount[0]&&Acount[1]>=Acount[2])
68         MostwinA=1;
69     else if(Acount[2]>=Acount[0]&&Acount[2]>=Acount[1])
70         MostwinA=2;
71     if(Bcount[0]>=Bcount[1]&&Bcount[0]>=Bcount[2])
72         MostwinB=0;
73     else if(Bcount[1]>=Bcount[0]&&Bcount[1]>=Bcount[2])
74         MostwinB=1;
75     else if(Bcount[2]>=Bcount[0]&&Bcount[2]>=Bcount[1])
76         MostwinB=2;
77     printf("%d %d %d\n",winA,equall,loseA);
78     printf("%d %d %d\n",loseA,equall,winA);
79     Print(MostwinA);
80     putchar( );
81     Print(MostwinB);     
82     
83 }
View Code

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。