题目描述
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

输入
输入第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

#include<iostream>
#include<string.h>
using namespace std;
int change(char x)
{if(x=='B') return 0;if(x=='C') return 1;if(x=='J') return 2;
}
int judge(char a,char b)
{if(a=='J'&&b=='C') return 0;else if(a=='J'&& b=='B') return 1;else if(a=='B'&& b=='J') return 0;else if(a=='B'&& b=='C') return 1;else if(a=='C'&& b=='B') return 0;else if(a=='C'&& b=='J') return 1;else return 2;
}
int imax(int x[])
{int max=-1;int maxid;for(int i=0;i<3;i++){if(x[i]>max){max=x[i];maxid=i;}}return maxid;
}
int main()
{int jias=0,jiaf=0,x[3]={},y[3]={},pi=0,result=0,n,maxid;char first,second,a,b;scanf("%d",&n);for(int i=1;i<=n;i++){cin>>a>>b;result=judge(a,b);if(result==0){jiaf++;y[change(b)]++;}if(result==1){jias++;x[change(a)]++;}if(result==2) pi++;} printf("%d %d %d\n",jias,pi,jiaf);printf("%d %d %d\n",jiaf,pi,jias);maxid=imax(x);if(maxid==0) first='B';if(maxid==2) first='J';if(maxid==1) first='C';maxid=imax(y);if(maxid==0) second='B';if(maxid==2) second='J';if(maxid==1) second='C';printf("%c %c\n",first,second);//cout<<jias<<" "<<pi<<" "<<jiaf<<endl;//cout<<x[0]<<" "<<x[1]<<" "<<x[2]<<endl;//cout<<y[0]<<" "<<y[1]<<" "<<y[2]<<endl;return 0;
}

总结与反思
1、 这个问题虽然稍微想想就有思路了,但是呢,debug还挺久的,主要是因为我直接#define B,C,J为0,1,2,但是呢,输入B,C,J的时候使用的是变量a,b,我的数组x[],y[],并不认为a,b为数字0,1,2,因此提交的时候答案错误了
2、还有有一点很奇怪的就是,我scanf("%c %c",&a,&b);的时候,输入C J,竟然是错的!为什么?这颠覆了我的想象,别人也是scanf("%c %c",&a,&b);都可以,而我竟然不能给a,b赋值,a竟然变成了空格……

【简单模拟】问题I:锤子剪刀布相关推荐

  1. 模拟题【PAT B1018】锤子剪刀布 (20 分)

    1018 锤子剪刀布 (20 分) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什 ...

  2. C语言满分代码:1018 锤子剪刀布 (20分)(解题报告)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记 ...

  3. 1018 锤子剪刀布 (20 分)

    大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...

  4. PAT——1018. 锤子剪刀布

    大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...

  5. 锤子剪刀布pat-1018

    题目描述 大家应该都会玩"锤子剪刀布"的游戏: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入描述: 输入第1行给出正整数N(< ...

  6. PAT (Basic Level) Practice1018 锤子剪刀布

    1018 锤子剪刀布 一.题目 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手 ...

  7. PTA1018 锤子剪刀布

    题目: 输入格式: 输入第 1 行给出正整数 N(≤10^5),即双方交锋的次数.随后 N 行,每行给出一次交锋的信息,即甲.乙双方同时给出的的手势.C 代表"锤子".J 代表&q ...

  8. PAT 乙级 锤子剪刀布 (20)

    锤子剪刀布 (20) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最 ...

  9. PAT 乙级 1018 锤子剪刀布 (20分)

    大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...

最新文章

  1. python自定义函数画图_利用Python绘图和可视化(长文慎入)
  2. Altium Designer中将FPGA引脚定义导出成文件
  3. 该虚拟机似乎正在使用
  4. DHCP通过NAP认证
  5. 用java统计任一书名次数_Java入门第三季 借书系统源代码 加入了限制重输次数 欢迎指教交流...
  6. 异常:Software caused connection abort: socket write error
  7. matplotlib 柱状图、饼图;直方图、盒图
  8. spring或springmvc自动生成applicationcontext.xml或springmvc文件(此文转载和借鉴多篇文章)...
  9. OC 计算幂集 - 递归法
  10. python绘制中国_用Python画中国地图(下)
  11. 考研复试C程序设计基础
  12. 二叉树求解前序序列、中序序列、后序序列
  13. @Value注入静态变量(static)
  14. C++之 system(“pause“); 与 getchar(); 防止控制台闪退
  15. quill光标位置插入html,quill编辑器+word文档上传,插入指定位置
  16. 从写下第1行代码到拿下谷歌百万年薪 ,我是如何在8个月内做到的?
  17. opencv cvFindContour 轮廓 freeman链码
  18. 不会英语可以学计算机编程吗,不会英语的人应该怎么学编程
  19. scrapy爬取王者荣耀皮肤
  20. 科普丨【计算机视觉】OpenCV中直方图处理函数简述

热门文章

  1. Flume入门——Selector、Chanel等
  2. SpbAirIslands超级好玩的模拟养成ppc游戏,很好玩,推荐
  3. 【Android O】 Service AAA does not have a SELinux domain defined
  4. 删除列表中的空格(其他元素)的4种方法
  5. 街霸游戏android华为,街霸对决华为版
  6. 老杳对浑水质疑展讯的理解
  7. MovieClip.setMask()
  8. 专家论剑人工智能 技术远未成熟
  9. 服务器内存不足应用无法登录,登录服务器时显示存储空间不足,无法处理此命令....
  10. 外媒:HTML5取代不了Flash