#include<iostream>usingnamespace std;//返回获胜最多的手势charmaxWin(int C,int J,int B){int max = C;int flag =0;//标识获胜次数相同的手势个数(2代表三个都相同)//求获胜最多的手势if(max < J) max = J;if(max < B) max = B;//标识if(C == J && C == B) flag =2;else{if(C == J && max == C) flag++;if(C == B && max == C) flag++;if(B == J && max == B) flag++;}//根据标识和max返回对应的手势if(flag ==0){if(max == C)return'C';if(max == J)return'J';if(max == B)return'B';}elseif(flag ==2){return'B';}else{if(max == C && max == J)return'C';if(max == C && max == B)return'B';if(max == J && max == B)return'B';}}intmain(){int N;while(cin >> N)//多组输入,ACM比赛要求{char a,b;// 获胜 平局 负局int sa =0,pa =0, fa =0;int sb =0,pb =0, fb =0;//锤子获胜 剪刀获胜 布获胜int Ca =0,Ja =0, Ba =0;int Cb =0,Jb =0, Bb =0;for(int i =1; i <= N; i++){
cin >> a >> b;if(a == b)//平局{
pa++;pb++;}else{//甲胜,乙负if((a =='C'&& b =='J'&&++Ca)||(a =='J'&& b =='B'&&++Ja)||(a =='B'&& b =='C'&&++Ba))//根据&&的截断特性只要a == 'C' && b == 'J'是真值,则甲胜,记录甲获胜的手势即: 再加上&& ++Ca{
sa++;
fb++;}//乙胜,甲负if((b =='C'&& a =='J'&&++Cb)||(b =='J'&& a =='B'&&++Jb)||(b =='B'&& a =='C'&&++Bb)){
sb++;
fa++;}}}
cout << sa <<" "<< pa <<" "<< fa << endl;
cout << sb <<" "<< pb <<" "<< fb << endl;
cout <<maxWin(Ca,Ja,Ba)<<" "<<maxWin(Cb,Jb,Bb)<< endl;}return0;}
1018 锤子剪刀布(C++实现)题目具体代码#include <iostream>using namespace std;//返回获胜最多的手势char maxWin(int C,int J,int B){ int max = C; int flag = 0;//标识获胜次数相同的手势个数(2代表三个都相同) //求获胜最多的手势 if(max < J) max = J; if(max < B) max = B;