在家做的打字兼职的网站,浙江网站怎么做推广,中国空间站叫什么名,湖南常德市简介题目
两人玩锤子剪刀布#xff0c;现给出两人的交锋记录#xff0c;请统计双方的胜、平、负次数#xff0c;并且给出双方分别出什么手势的胜算最大。
输入格式#xff1a;
输入第 1 行给出正整数 N#xff08;≤105 #xff09;#xff0c;即双方交锋的次数。随后 N …题目
两人玩锤子剪刀布现给出两人的交锋记录请统计双方的胜、平、负次数并且给出双方分别出什么手势的胜算最大。
输入格式
输入第 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分析
求解双方胜、负、平次数只需每次输入数据时进行判断然后累加即可注意一人胜另一人负。求解双方胜利次数最多的手势且如果解不唯一选择字母序小的。可用数组下标来顺序对应B、C、J来解决。可使用一个结构体来存储成员包括victory,draw,defeat,count[3]。声明两个结构体变量时声明为全局变量。这样编译器会将变量初始化不用再自己另外再初始化。
AC代码
#includeiostream
using namespace std;
struct node
{int count[3];int victory,draw,defeat;
}A,B;
int game(char A,char B)
{if(AB)return 0;else if((ACBJ)||(ABBC)||(AJBB))return 1;elsereturn 2;
}int main()
{int i,N;char ch1,ch2; cinN;for(i0;iN;i){cinch1ch2;int tempgame(ch1,ch2);if(temp0){A.draw;B.draw;}else if(temp1){A.victory;B.defeat; if(ch1B)A.count[0]; else if(ch1C)A.count[1];elseA.count[2];}else{B.victory;A.defeat;if(ch2B)B.count[0]; else if(ch2C)B.count[1];elseB.count[2];}}coutA.victory A.draw A.defeatendl;coutB.victory B.draw B.defeatendl;int max_AA.count[0],max_BB.count[0],flag10,flag20;for(i1;i3;i){if(A.count[i]max_A){max_AA.count[i];flag1i; }if(B.count[i]max_B){max_BB.count[i];flag2i; } }if(flag10) coutB ;else if(flag11)coutC ;elsecoutJ ;if(flag20) coutB;else if(flag21)coutC;elsecoutJ;return 0;
}如果小伙伴有任何问题或者建议欢迎评论区留言或者私信博主哦
更多题解 pat 乙级 题解汇总持续更新C