1. 程式人生 > >PAT乙1018. 錘子剪刀布 (20)

PAT乙1018. 錘子剪刀布 (20)

題目在這裡

1018. 錘子剪刀布 (20)

時間限制 100 ms
記憶體限制 65536 kB
程式碼長度限制 8000 B
判題程式 Standard 作者 CHEN, Yue

大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,勝負規則如圖所示:

現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。

輸入格式:

輸入第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

#include<cstdio>
int main(){
	int num,awin=0,bwin=0,equ=0,ac=0,aj=0,ab=0,bc=0,bj=0,bb=0;
	char a,b,c,d;
	scanf("%d",&num);
	for(int i=0;i<num;i++){
		getchar();					//消化一個回車 
		scanf("%c %c",&a,&b);
		if(a=='C'){
			if(b=='J'){
				awin++;
				ac++;
			}else if(b=='B'){
				bwin++;
				bb++;
			}else if(b=='C'){
				equ++;
			}
		}else if(a=='J'){
			if(b=='B'){
				awin++;
				aj++;
			}else if(b=='C'){
				bwin++;
				bc++;
			}else if(b=='J'){
				equ++;
			}
		}else if(a=='B'){
			if(b=='C'){
				awin++;
				ab++;
			}else if(b=='J'){
				bwin++;
				bj++;
			}else if(b=='B'){
				equ++;
			}
		}
	}
	char awinmax,bwinmax;
	if ((ab>ac&&ab>aj)||(ab==ac&&ab>aj)||(ab==aj&&ab>ac)||(ab==ac&&ab==aj)) awinmax='B';
	else if((ac>ab&&ac>aj)||(ac==aj&&ac>ab&&aj>ab)) awinmax='C';
	else awinmax='J';
	if ((bb>bc&&bb>bj)||(bb==bc&&bb>bj)||(bb==bj&&bb>bc&&bj>bc)||(bb==bc&&bb==bj)) bwinmax='B';
	else if((bc>bb&&bc>bj)||(bc==bj&&bc>bb)) bwinmax='C';
	else bwinmax='J';
	printf("%d %d %d\n",awin,equ,bwin);
	printf("%d %d %d\n",bwin,equ,awin);
	printf("%c %c",awinmax,bwinmax);
	return 0;
}