1018锤子剪刀布(20分) )。
大家应该会玩“锤剪刀布”的游戏。 两人同时做手势,胜负规则如图所示。
现在拿出两人的对战记录。 请统计双方的赢、平局、输的次数,然后表示双方各自做出了什么手势胜算最大。
输入格式:在第一行中输入正整数n10(5)。 也就是说,是双方对战的次数。 然后,给n行、每行一次交战的信息,即甲、乙双方同时发出的手势。 c表示“锤子”,j表示“剪刀”,b表示“布”,第一个字表示甲,第二个字表示乙,中间有一个空格。
输出形式:输出第1、2行分别表示甲、乙胜、平、负的次数,数字之间用一个空格分隔。 第三行是两个字,分别表示甲、乙获胜次数最多的手势,中间有一个空格。 解不唯一时,按字母顺序输出最小的解。
输入示例: 10 cjbcbbcbjbcj输出示例: 532235 b==========================
甲、乙平局次数and每个人必须记录最赢的手势。 从全局上看,共有9种情况,只需列出6种胜负情况,与其他3种平局无关。
甲赢时,aWin++,这是甲赢得次数。
同时,用cntA[3] = {0}; 数组记录甲赢的手势次数,用cntA[0]代表甲以 B 的次数,cntA[1]甲以 C 赢次数,cntA[2]甲以 J 赢次数...
乙方获胜时,同样bWin和cntB[3]的排列记录乙方获胜的手势次数。
输出,甲方胜平负为双赢、双赢、双赢; 这很容易理解。
以及string s='BCJ ';
33558 www.Sina.com/: couts [ maxa ] ' s [ maxb ];
==================================
# includeiostreamusingnamespacestd; int main () {int n; cin n; int aWin=0,bWin=0,cntA[3]={ 0 },cntB[3]={ 0 }; for(intI=0; i n; I ) {char a,b; cin a b; if(a=='b'b=='c ' ) {aWin; cntA[0]; }elseif(a=='b'b=='j ' ) {bWin; cntB[2]; }elseif(a=='c'b=='b ' ) {bWin; cntB[0]; }elseif(a=='c'b=='j ' ) {aWin; cntA[1]; }elseif(a=='j'b=='b ' ) {aWin; cntA[2]; }elseif(a=='j'b=='c ' ) {bWin; cntB[1]; }printf('%d%d%d(n ),aWin,n - aWin - bWin,bWin ); printf(%d%d%d(n ),bWin,n - aWin - bWin,aWin ); int maxA=0,maxB=0; for(intI=1; i 3; I ) if(CNTA[I]CNTA[MAXA] ) maxA=i; for(intI=1; i 3; I ) if(cntb[I]cntb[maxb] ) maxB=i; string s='BCJ '; cout s[maxA] ' ' s[maxB]; 返回0; }