1018 锤子剪刀布 (20分)

大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mPEAjWgv-1619358972875)(https://uploader.shimo.im/f/SqgVbhlcSVooVgyV.png!thumbnail?fileGuid=9XkkpYK9dCK8twyC)]

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。

输入格式:

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

题目解析:
此题我采用的方法是定义两个数组分别存放甲乙各个手势的胜利次数,最后整个数组所有元素的和就是总的胜利次数,同时定义整型变量ping,记录平的次数,N-胜-平就是负的次数。

此题还有一个问题就是使用Scanner的话最后一个测试点容易超时,所以还是使用BufferedReader避免超时。

AC代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {public static void main(String[] args) throws Exception {BufferedReader br=new BufferedReader(new InputStreamReader(System.in));int N=Integer.parseInt(br.readLine());int count_jia[]=new int[3];//甲的获胜次数,数组从左到右代表J C B/*之所以count_jia[0]代表J获胜次数,count_jia[1]代表C获胜次数,count_jia[2]代表B获胜次数* 是因为最后还要统计获胜次数最多的手势,所以需要单独统计每一个手势获胜的次数,还有为什么是J C B* 这种排序,是因为如果解不唯一,则输出按字母序最小的解,JCB越往右字典序越小 楼下count_yi数组同理*/int count_yi[]=new int[3];int ping=0;//记录ping的次数for(int i=0;i<N;i++){char[] c=br.readLine().toCharArray();char jia=c[0];//得到甲手势char yi=c[2];//得到乙手势if(jia=='C'){//如果甲是Cif(yi=='C'){//乙也是C,那么就平ping++;}else if(yi=='B'){ //如果乙是B,那么乙赢,乙的B手势获胜次数加1// 下面都是一样的道理,都是互相比较决定谁赢,我就不写注释了count_yi[2]++;}else{             count_jia[1]++;}}else if(jia=='B'){if(yi=='B'){ping++;}else if(yi=='C'){count_jia[2]++;}else{count_yi[0]++;}}else{if(yi=='J'){ping++;}else if(yi=='B'){count_jia[0]++;}else{count_yi[1]++;}}}//输出甲胜负平次数System.out.println(count_jia[0]+count_jia[1]+count_jia[2]+" "+ping+" "+(N-ping-(count_jia[0]+count_jia[1]+count_jia[2])));//输出乙胜负平次数System.out.println(count_yi[0]+count_yi[1]+count_yi[2]+" "+ping+" "+(N-ping-(count_yi[0]+count_yi[1]+count_yi[2])));//找甲胜数次数最多的手势       int max=0,index=0;//定义最大值,和最大值的下标for(int i=0;i<3;i++){if(max<=count_jia[i]){//这里一定得是<=,因为是按JCB排序的//如果最后CB个数相同,还要进行比较,因为B是字典序小的max=count_jia[i];index=i;}}//如果index是0,说明数组下标第一个位置的数最大,是J,CB一个道理switch(index){case 0:System.out.print("J ");break;case 1:System.out.print("C ");break;case 2:System.out.print("B ");break;}//找乙胜数次数最多的手势,和甲的分析方式一样我就不写注释了max=0;index=0;for(int i=0;i<3;i++){if(max<=count_yi[i]){max=count_yi[i];index=i;}}switch(index){case 0:System.out.print("J");break;case 1:System.out.print("C");break;case 2:System.out.print("B");break;}}
}

PAT乙级1018,附题目解析和代码注释相关推荐

  1. PAT乙级题目索引(题目+解析+AC代码)

    题目信息 分值 PAT 乙级 1001 害死人不偿命的(3n+1)猜想 15 PAT 乙级 1002 写出这个数 20 PAT 乙级 1003 我要通过! 20 PAT 乙级 1004 成绩排名 20 ...

  2. pat 乙级 1018 锤子剪刀布(C++)

    题目 两人玩锤子剪刀布,现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 N(≤105 ),即双方交锋的次数.随后 N 行 ...

  3. [PAT乙级]1025 反转链表 (思路+精简代码)

    1025 反转链表 给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转.例如:给定 L 为 1→2→3→4→5→6,K 为 3,则输出应该为 3→2→1→6→5→4:如果 K ...

  4. 蛇形填数-2020年蓝桥杯C/C++题目解析和代码

    问题描述 如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵. 1 2 6 7 15 - 3 5 8 14 - 4 9 13 - 10 12 - 11 - - 容易看出 ...

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

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

  6. 蓝桥杯之单片机学习(二十五)——温度记录器(附题目和完整代码)

    文章目录 一.题目要求 二.代码操作 2.1 main.c 2.2 ds1302.c 三.一些心得 一.题目要求 二.代码操作 2.1 main.c #include <STC15F2K60S2 ...

  7. 蓝桥杯之单片机学习(二十一)——自动售水机(附题目和完整代码)

    文章目录 一.题目要求 二.代码展示 三.注意事项 一.题目要求 二.代码展示 #include <STC15F2K60S2.h> #include "iic.h"#d ...

  8. PAT乙级 1018 锤子剪刀布

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

  9. [PAT乙级]1018 锤子剪刀布

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

最新文章

  1. 使用Cookie记录信息
  2. numpy生成随机数
  3. 解决:Sublime Text3 packagecontrol.io 无法访问的问题
  4. 创建hadoop用户并配置ssh免密码登录
  5. IDEA-2020版本 Gradle项目控制台输出乱码
  6. gulp-babel 阻止了js文件编译的进程?
  7. 阿尔卡特朗讯sdh设备板卡汇总_全球通信设备企业集中,中国企业脱颖而出!
  8. 《此生未完成》痛句摘录(一)
  9. nginx 命令_MAC 操作nginx命令
  10. 两波形相位差的计算值_波形相位频率可调DDS信号发生器(设计分享)
  11. 使用虚拟机备份软件恢复云宏Winghong CNware虚拟机
  12. python写出租车计费系统_用VHDL设计出租车计费系统
  13. 偏最小二乘法(R语言)
  14. 不谋一时不足以谋一域_“不谋万世者,不足谋一时。不谋全局者,不足谋一隅”出自哪里?是什么意思?...
  15. 用c语言屏蔽鼠标键盘,用VBS屏蔽键盘和鼠标
  16. Electron 自定义托盘实战——桌面计算器
  17. HTML、纯JS实现语音播放,实现定时刻播放
  18. 微信小程序体验评分问题
  19. 手机中好用的软件有哪些?让我来告诉你吧
  20. 【新华三】华三设备NTP无法同步

热门文章

  1. 怕远程办公不安全?大企业同款神器,网络加速、防护、上网管理
  2. 各省份普通高等学校在校学生数(1999-2021年)
  3. 图像位深度 8位 16位 24位 32位区别对比 RGB 真彩色 基本概念:(大小,深度,通道)位深度数据类型转换原理 Mat数据读取(opencv里的imread)
  4. Java+SWT实现播放器
  5. python两个集合相加_两个集合相加java
  6. 迅捷PDF转PPT转换器使用教程
  7. 国瀚实业|个人理财需要掌握哪些知识
  8. 存货计价方式学习-个别计价
  9. POI 控制 excel 生成图表的方式(二)
  10. Science「劝退文」:读博压力山大,是时候退学了