大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
![](http://nos.patest.cn/7r_muvaqb4myb9.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<stdio.h> 2 #include<string.h> 3 4 int main() 5 { 6 int n; 7 int jia[3]= {0}; //甲B,C,J赢的次数 8 int yi[3] = {0}; //乙B,C,J赢的次数 9 int eq=0; //平局次数 10 int i,temp; 11 int wina=0; //甲赢总次数 12 char jiac,yic; 13 scanf("%d",&n); 14 for( i=0; i<n; i++) 15 { 16 getchar(); 17 scanf("%c %c",&jiac,&yic); 18 temp = (int)( jiac-yic); 19 switch( temp ) 20 { 21 case 8: 22 jia[2]++; //甲剪刀乙布 23 break; 24 case 7: 25 yi[1]++; //甲剪刀乙锤子 26 break; 27 case 1: 28 yi[0]++; //甲锤子乙布 29 break; 30 case 0: 31 eq ++; //平局 32 break; 33 case -1: 34 jia[0]++; //甲布乙锤子 35 break; 36 case -7: 37 jia[1]++; //甲锤子乙剪刀 38 break; 39 case -8: 40 yi[2]++; //甲布乙剪刀 41 break; 42 } 43 } 44 wina = jia[0]+jia[1]+jia[2]; 45 printf("%d %d %d ",wina,eq,n-wina-eq); 46 printf("%d %d %d ",n-wina-eq,eq,wina); //甲赢则乙输,倒换即可 47 48 if( (jia[0]>=jia[1]) &&( jia[0]>=jia[2])) 49 printf("B "); 50 else if((jia[1]>jia[0]) &&( jia[1]>=jia[2])) 51 printf("C "); 52 else printf("J "); 53 54 if( (yi[0]>=yi[1]) &&( yi[0]>=yi[2])) 55 printf("B"); 56 else if((yi[1]>yi[0]) &&( yi[1]>=yi[2])) 57 printf("C"); 58 else printf("J"); 59 return 0; 60 }