1018 錘子剪刀布 比較 多組比賽 PTAbasic 浙大C++

題目:
現給出兩人的石頭剪刀布交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式:
輸入第 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<iostream>
using namespace std;

int a_c=0,a_b=0,a_j=0,b_c=0,b_b=0,b_j=0; 

int compare(char a,char b){
	if(a=='C'){
		if(b=='J'){
			a_c++;
			return 1;
		}else if(b=='B'){
			b_b++;
			return -1;
		}else if(b=='C')
			return 0;
		else return 100;
	}
	else if(a=='J'){
		if(b=='C'){
			b_c++;
			return -1;
		}else if(b=='B'){
			a_j++;	
			return 1;
		}else if(b=='J')
			return 0;
		else return 100;
	}
	else if(a=='B'){
		if(b=='C'){
			a_b++;
			return 1;
		}else if(b=='B')
			return 0;
		else if(b=='J'){
			b_j++;
			return -1;
		}else return 100;
	}
	else return 100;
}

int main(){
	int count;
	cin>>count;
	char a,b;
	int win=0,ffalse=0,draw=0;
	for(int i=0;i<count;i++){
		cin>>a>>b;
		int flag=compare(a,b);
		if(flag==1)
			win++;
		if(flag==0)
			draw++;
		if(flag==-1)
			ffalse++;
		if(flag==100){
			cout<<"輸入錯誤";
			return 0; 
		 } 
	}
	cout<<win<<" "<<draw<<" "<<ffalse<<endl;
	cout<<ffalse<<" "<<draw<<" "<<win<<endl;
	if(a_b>=a_c&&a_b>=a_j)
		cout<<"B ";
	else if(a_c>=a_j)
		cout<<"C ";
	else
		cout<<"J ";
	if(b_b>=b_c&&b_b>=b_j)
		cout<<"B";
	else if(b_c>=b_j)
		cout<<"C";
	else
		cout<<"J";
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章