题目描述 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 输入第1行给出正整数N(<=10^5),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。 输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。 10 5 3 2 思路:这个题总体来说并不难,只是比较繁琐,注意细节就可以了。我定义了5个字符数组,其中a和b表示甲乙二人的战绩,s1和s2表示甲乙二人获胜手势的出场率,由于题目还要求如果解不唯一,则输出按字母序最小的解,所以0~3分别代表BCJ,这样可以保证在最后找出场率最多的那个手势时,若是有重复的,找到的手势永远都是字母序最小的。
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入
输出
样例输入
C J
J B
C B
B B
B C
C C
C B
J B
B C
J J样例输出
2 3 5
B B#include <cstdio> #include <iostream> using namespace std; int main() { int i,n,a[3]={0},b[3]={0},s1[3]={0},s2[3]={0}; char p,q,str[4]="BCJ"; cin >>n; for(i=0;i<n;i++){ cin >>p>>q; if(p==q){ a[1]++; b[1]++; continue; } if(p=='B'){ if(q=='J'){ b[0]++; s2[2]++; a[2]++; } else{ b[2]++; a[0]++; s1[0]++; } continue; } if(p=='C'){ if(q=='J'){ a[0]++; b[2]++; s1[1]++; } else{ a[2]++; b[0]++; s2[0]++; } continue; } if(p=='J'){ if(q=='C'){ b[0]++; s2[1]++; a[2]++; } else{ b[2]++; a[0]++; s1[2]++; } continue; } } printf("%d %d %dn",a[0],a[1],a[2]); printf("%d %d %dn",b[0],b[1],b[2]); int idex1,idex2,j,max1=-1,max2=-1; for(i=0;i<3;i++){ if(s1[i]>max1){ idex1=i; max1=s1[i]; } if(s2[i]>max2){ max2=s2[i]; idex2=i; } } cout <<str[idex1]<<' '<<str[idex2]; }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算