PAT-1018 錘子剪刀布
阿新 • • 發佈:2018-11-13
1018 錘子剪刀布 (20 分)
大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,勝負規則如圖所示:
現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式:
輸入第 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 main() { int n,s[2]={0},p[2]={0},f[2]={0},v[3]={0},w[3]={0}; char j,y; cin>>n; for(int i=0;i<n;i++) { cin>>j>>y; if(j==y) { p[0]++; p[1]++; } else if(j=='B'&&y=='C') { s[0]++; f[1]++; v[0]++; } else if(j=='C'&&y=='J') { s[0]++; f[1]++; v[1]++; } else if(j=='J'&&y=='B') { s[0]++; f[1]++; v[2]++; } else if(j=='C'&&y=='B') { s[1]++; f[0]++; w[0]++; } else if(j=='J'&&y=='C') { s[1]++; f[0]++; w[1]++; } else if(j=='B'&&y=='J') { s[1]++; f[0]++; w[2]++; } } cout<<s[0]<<" "<<p[0]<<" "<<f[0]<<endl; cout<<s[1]<<" "<<p[1]<<" "<<f[1]<<endl; int max=0; int flag=0; for(int i=0;i<3;i++) { if(v[i]>max) { max=v[i]; flag=i; } } if(flag==0) { cout<<"B"<<" "; } else if(flag==1) { cout<<"C"<<" "; } else if(flag==2) { cout<<"J"<<" "; } max=0; flag=0; for(int i=0;i<3;i++) { if(w[i]>max) { max=w[i]; flag=i; } } if(flag==0) { cout<<"B"; } else if(flag==1) { cout<<"C"; } else if(flag==2) { cout<<"J"; } return 0; }
第一次一遍就AC,紀念一下