zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practise (中文)- 1018. 锤子剪刀布 (20)

    http://www.patest.cn/contests/pat-b-practise/1018

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

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

    输入格式:

    输入第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 
     3 int a2i(char c)
     4 {
     5     if(c=='B') return 0;
     6     else if(c=='C') return 1;
     7     else return 2;
     8 } 
     9 char i2a(int i)
    10 {
    11      if(i==0) return 'B';
    12      else if(i==1) return 'C';
    13      else return 'J'; 
    14 }
    15 
    16 int main()
    17 {
    18     int n=0;//双方交锋的次数
    19     scanf("%d",&n);
    20     
    21     char jia,yi;
    22     int sheng=0,ping=0,fu=0; //
    23     int ying1[3]={0},ying2[3]={0}; //B“0 布”    C“1 锤子”   J“2 剪刀”、
    24     for(int i=0;i<n;i++)
    25     {
    26         getchar();
    27         scanf("%c",&jia);
    28         getchar();
    29         scanf("%c",&yi);
    30         
    31         if(a2i(jia)==a2i(yi)) ping++;
    32         else if((a2i(jia)-a2i(yi)+3)%3==2) sheng++,ying1[a2i(jia)]++;
    33         else fu++,ying2[a2i(yi)]++; 
    34     }    
    35     printf("%d %d %d
    ",sheng,ping,fu);//输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔
    36     printf("%d %d %d
    ",fu,ping,sheng);
    37     
    38  
    39     int k=0;
    40     for(int i=1;i<3;i++)
    41         if(ying1[i]>ying1[k]) k=i;    
    42     printf("%c",i2a(k));//第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。
    43     
    44     k=0;
    45     for(int i=1;i<3;i++)
    46         if(ying2[i]>ying2[k]) k=i;   
    47     printf(" %c",i2a(k));
    48     return 0;
    49 }
     1 #include<stdio.h>
     2 int main()
     3 {
     4     int n=0;
     5     scanf("%d",&n);
     6     
     7     char jia,yi,chu[3]={'B','C','J'};
     8     int sheng=0,ping=0,fu=0; //
     9     int ying1[3]={0,0,0},ying2[3]={0,0,0}; //B“0 布” C“1 锤子”、J“2 剪刀”、
    10     for(int i=0;i<n;i++)
    11     {
    12         getchar();
    13         scanf("%c",&jia);
    14         getchar();
    15         scanf("%c",&yi);
    16         
    17         if(jia=='J' && yi=='B')
    18         {
    19              sheng++;
    20              ying1[2]++;
    21         }
    22         else if(jia=='B' && yi=='C')
    23         {
    24              sheng++;
    25              ying1[0]++;
    26         }
    27         else if(jia=='C' && yi=='J')
    28         {
    29              sheng++;
    30              ying1[1]++;
    31         } 
    32         else if(jia=='B' && yi=='J')
    33         {
    34              fu++;
    35              ying2[2]++;
    36         }
    37         else if(jia=='C' && yi=='B')
    38         {
    39              fu++;
    40              ying2[0]++;
    41         }
    42         else if(jia=='J' && yi=='C')
    43         {
    44              fu++;
    45              ying2[1]++;
    46         }
    47         else
    48             ping++;
    49     }
    50     
    51     printf("%d %d %d
    ",sheng,ping,fu);
    52     printf("%d %d %d
    ",fu,ping,sheng);
    53     
    54  
    55     int max=0,k=0;
    56     for(int i=0;i<3;i++)
    57         if(ying1[i]>max)
    58         {
    59           max=ying1[i];
    60           k=i;
    61         }    
    62     printf("%c",chu[k]);
    63     
    64     max=0;
    65     k=0;
    66     for(int i=0;i<3;i++)
    67         if(ying2[i]>max)
    68         {
    69           max=ying2[i];
    70           k=i;
    71         }    
    72     printf(" %c",chu[k]);
    73     return 0;
    74 }
  • 相关阅读:
    求1000以内的勾股数的算法流程图
    23天的单车旅行,从广州到四川,重庆,大足石刻,母校,家,发完了
    好玩的Flash:跟鼠标拼命
    23天的单车旅行,从广州到四川,息烽集中营,韩国人,乌江,遵义
    如何彻底删除SQL Server2005
    EOF,EOC与感叹号的区别
    如何彻底卸载vs2008及其组件?
    PHP中extract()函数的妙用
    php 函数合并 array_merge 与 + 的区别
    unserialize error at offset
  • 原文地址:https://www.cnblogs.com/asinlzm/p/4463728.html
Copyright © 2011-2022 走看看