大家應(yīng)該都會(huì)玩“錘子剪刀布”的游戲:兩人同時(shí)給出手勢(shì),勝負(fù)規(guī)則如圖所示:

錘子剪刀布
現(xiàn)給出兩人的交鋒記錄,請(qǐng)統(tǒng)計(jì)雙方的勝、平、負(fù)次數(shù),并且給出雙方分別出什么手勢(shì)的勝算最大。
輸入格式:
輸入第 1 行給出正整數(shù) N(≤105??),即雙方交鋒的次數(shù)。隨后 N 行,每行給出一次交鋒的信息,即甲、乙雙方同時(shí)給出的的手勢(shì)。C 代表“錘子”、J 代表“剪刀”、B 代表“布”,第 1 個(gè)字母代表甲方,第 2 個(gè)代表乙方,中間有 1 個(gè)空格。
輸出格式:
輸出第 1、2 行分別給出甲、乙的勝、平、負(fù)次數(shù),數(shù)字間以 1 個(gè)空格分隔。第 3 行給出兩個(gè)字母,分別代表甲、乙獲勝次數(shù)最多的手勢(shì),中間有 1 個(gè)空格。如果解不唯一,則輸出按字母序最小的解。
輸入樣例:
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
代碼:(有點(diǎn)長(zhǎng),可以改成更好的)
#include<iostream>
#include<cstring>
using namespace std;
struct game{//結(jié)構(gòu)體
int Cwin,Jwin,Bwin;
int win,fail,ping;
game(){//OK
Cwin=0;//用錘子贏了
Jwin=0;//用剪刀贏了
Bwin=0;//用布贏了
win=0;//贏的次數(shù)
fail=0;//輸?shù)拇螖?shù)
ping=0;//平局的次數(shù)
}
};
char findmax(game a){//找到獲勝最多的姿勢(shì),這里注意字母順序B C J
int x=a.Bwin;//先讓X初始化為B的數(shù)值
char output='B';//先讓輸出初始化為B
if(x<a.Cwin){//如果小于C就用C的替換
x=a.Cwin;
output='C';
}
//如果B的值大于等于C的值那就不變,大于等于包括了等于
//因?yàn)锽在C的字母序前面所以不產(chǎn)生任何改變所以這里不用寫(xiě)else
//下面這個(gè)判斷同理
if(x<a.Jwin){
x=a.Jwin;
output='J';
}
return output;
}
int main(){
int n;
char l,r;
game jia,yi;//生命 甲 乙 兩個(gè)結(jié)構(gòu)體變量
scanf("%d",&n);
for(int i=0;i<n;i++){//ok
getchar();//用getchar()吸收回車(chē)
scanf("%c %c",&l,&r);//讀取兩個(gè)字母
if(l=='C'){//如果甲出錘子
if (r=='C') {//乙出錘子
jia.ping ++;
yi.ping ++;
}
else if(r=='J'){//乙出剪刀
jia.win ++;
yi.fail ++;
jia.Cwin ++;
}
else if(r=='B'){//乙出布
yi.win ++;
jia.fail ++;
yi.Bwin ++;
}
}
else if(l=='J'){//如果甲出剪刀
if (r=='C'){//乙出錘子
yi.win ++;
jia.fail ++;
yi.Cwin ++;
}
else if(r=='J'){//乙出剪刀
jia.ping ++;
yi.ping ++;
}
else if(r=='B'){//乙出布
jia.win ++;
yi.fail ++;
jia.Jwin ++;
}
}
else if(l=='B'){//如果甲出布
if (r=='C'){//乙出錘子
jia.win ++;
yi.fail ++;
jia.Bwin ++;
}
else if(r=='J'){//乙出剪刀
yi.win ++;
jia.fail ++;
yi.Jwin ++;
}
else if(r=='B'){//乙出布
jia.ping ++;
yi.ping ++;
}
}
}
printf("%d %d %d\n",jia.win ,jia.ping ,jia.fail );//輸出甲的成績(jī)
printf("%d %d %d\n",yi.win ,yi.ping ,yi.fail );//輸出乙的成績(jī)
printf("%c %c",findmax(jia),findmax(yi));//輸出甲乙獲勝最多的姿勢(shì)
return 0;
}