PAT (Basic Level) Practice (中文) 1018 锤子剪刀布 (20 分)

1018 锤子剪刀布 (20 分)

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

FigCJB.jpg

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

输入格式:

输入第 1 行给出正整数 N(≤10​5​​),即双方交锋的次数。随后 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
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int main(void){
	
	int N,a1,aw,bw,nw,a2,a3,b1,b2,b3;
	char a,b;
	while( scanf("%d",&N)!=EOF ){
		    a1=a2=a3=b1=b2=b3=aw=bw=nw=0;
		    for( int i=1;i<=N;i++){ 
			scanf(" %c %c",&a,&b);
		    if( a== 'C' && b =='J'){
		  	    aw++;
				a2++;	
			 }
			 else if( a == 'J' && b == 'C'){
			 	bw++;
			 	b2++;
			 }
			else if( a == 'J' && b=='B'){
				aw++;
				a3++;
			} 
			else if( a == 'B' && b == 'J' ){
				bw++;
				b3++;
			}
		  	
		  	else if( a == 'B' && b =='C'){
		  		aw++;
		  		a1++;
			  }
			else if( a =='C' && b == 'B'){
				bw++;
				b1++;
			}
		  	else nw++;
		   }
		   
		   printf("%d %d %d\n",aw,nw,bw);
		   printf("%d %d %d\n",bw,nw,aw);
		   int maxx = -1;
		   maxx = max( a1,max(a2,a3));
           if( a1 == maxx){
		   	   printf("B");
		   }
		   else if( a2 == maxx){
		   	   printf("C");
		   } 
		   else if( a3 == maxx){
		   	  printf("J");
		   } 
		    
		   maxx = max( b1,max(b2,b3));
		   
		   if( b1 == maxx){
		   	   printf(" B\n");
		   }
		   else if( b2 == maxx){
		   	   printf(" C\n");
		   } 
		   else if( b3 == maxx){
		   	  printf(" J\n");
		   } 
		    
		   
	}
	
	return 0;
}

猜你喜欢

转载自blog.csdn.net/S_999999/article/details/94652416