PAT B1018.锤子剪刀布

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

 现给出两人的交锋记录,请统计双方的胜、平、负次数,并给出双方分别出什么手势的胜算最大。
输入格式
第一行给出正整数N(≤10'),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第一个学母代表甲方,第二个字母代表乙方,中间有一个空格。
 

输出格式
第一、二行分别给出甲、乙的胜、平、负次数,数字间以一个空格分隔。第三行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有一个空格。如果解不唯一,则输出按字典序最小的解。
 

输入样例

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
 

思路:

         根据题目要求。利用if语句实现。用times_A,times_B数组保存甲、乙的胜、平、负的情况。利用hand_A,hand_B数组保存获胜次数最多的手势。

        这里值得一提的是,巧妙的将字母转换为对应的字母,然后进行数字循环进行判断谁胜谁负。避免了大量的if...else判断,使得写法更加简洁。例如,‘B’对应0,‘C’对应1,‘J’对应2,它们正好是循环相克的顺序。利用k1,k2分别保存甲,乙的手势(0、1、2),则当(k1+1)%3==k2时,甲赢。当k1==k2时,平局,当(k2+1)%3==k1时,乙赢。

        另外,当输入格式是%c时,换行符\n会被读入,需要在合适的地方用getchar()将空格吸收——程序输入数据后闪退,基本就是这个问题导致。

代码实现

#include<cstdio>int change(char c)
{if(c=='B') return 0;//布  对应   0if(c=='C') return 1;//锤  对应   1if(c=='J') return 2;//剪  对应   2 
}int main()
{int N;char c1,c2;char mp[3] = {'B','C','J'};int times_A[3] = {0},times_B[3] = {0};//甲,乙胜、平、负的次数 int hand_A[3] = {0},hand_B[3] = {0}; //按BCJ顺序记录手势的获胜次数int k1,k2;scanf("%d",&N);for(int i=0;i<N;i++){getchar();scanf("%c %c",&c1,&c2);k1 = change(c1);  //转换为数字 k2 = change(c2);if((k1+1)%3==k2)  //甲胜,乙负 {times_A[0]++;times_B[2]++;hand_A[k1]++;	}	else if(k1==k2)  //甲乙平 {times_A[1]++;times_B[1]++;	} else  //乙胜,甲负 {times_A[2]++;times_B[0]++;hand_B[k2]++; }} int id1 = 0,id2 = 0;for(int i=0;i<3;i++)  //选出最大的数的下标 {if(hand_A[i]>hand_A[id1]) id1 = i;if(hand_B[i]>hand_B[id2]) id2 = i;}for(int i=0;i<3;i++) printf("%d ",times_A[i]);printf("\n");for(int i=0;i<3;i++) printf("%d ",times_B[i]);printf("\n");printf("%c %c",mp[id1],mp[id2]);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30535.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索Web Components

title: 探索Web Components date: 2024/6/16 updated: 2024/6/16 author: cmdragon excerpt: 这篇文章介绍了Web Components技术&#xff0c;它允许开发者创建可复用、封装良好的自定义HTML元素&#xff0c;并直接在浏览器中运行&#xff0c;无需依赖外部库。通过组合HTML模…

Top10在线音频剪辑软件,你了解几款?(免费分享)

多年来&#xff0c;随着音乐制作人和音频工程师的需求不断增长&#xff0c;音频剪辑软件领域经历了巨大的发展。最新的音频剪辑软件提供了从基本录制到最终发布所需的一切功能。其中一些软件专为播客设计&#xff0c;一些软件是免费的&#xff0c;并且一些软件提供了出色的音效…

python读取excel中的图片超链接,批量下载到本地

1、代码 import xlrd import requestsread_path C:\\Users\\asus\\Desktop\\大法\\公务员\\国考\\行测\\1-推理判断\\URLs.xlsx bk xlrd.open_workbook(read_path) shxrange range(bk.nsheets) sh bk.sheet_by_name("Sheet2") nrows sh.nrows ncols sh.ncols …

【自撰写】【国际象棋入门】第6课 常见术语分析(一)吃双和抽将

第6课 常见术语分析&#xff08;一&#xff09;吃双和抽将 本次课中&#xff0c;我们介绍几种最为常见和常用的&#xff08;单步棋形成&#xff09;的局面、术语并对其进行简单的分析。一般说来&#xff0c;这些局面都会给予一方以“立竿见影”的优势&#xff0c;或者引向之后…

“鸿蒙开发之图片下载”--案例问题整理

鸿蒙开发之图片下载 关于以上连接中案例demo使用问题整理如下图 而且在写这个案例的时候记得添加权限 "requestPermissions":[{"name" : "ohos.permission.INTERNET"}]

Java多线程设计模式之不可变对象(Immutable Object)模式

简介 多线程共享变量的情况下&#xff0c;为了保证数据一致性&#xff0c;往往需要对这些变量的访问进行加锁。而锁本身又会带来一些问题和开销。Immutable Object模式使得我们可以在不加锁的情况下&#xff0c;既保证共享变量访问的线程安全&#xff0c;又能避免引入锁可能带…

20240619在飞凌OK3588-C的Linux R4系统下查找MIPI YUV摄像头的csi size err

20240619在飞凌OK3588-C的Linux R4系统下查找MIPI YUV摄像头的csi size err 2024/6/19 14:00 缘起&#xff0c;公司使用LVDS OUT的机芯&#xff0c;4LANE的LVDS输出。1920x108030分辨率&#xff08;1080p/30&#xff09; 通过FPGA转换为2LANE的MIPI OUT之后进RK3588/OK3588-C。…

sqlite3指令操作-linux

1.查看当前数据库位置 2.查看当前数据库文件下有哪些表 3.显示 某表创建时的SQL语句 4.打开、关闭显示列标题&#xff1b; 5.列对齐显示 6.列以‘&#xff0c;’分隔显示 .separator 7.查询表信息 8.插入消息 9.删除某一行内容 10.修改某行某列内容 11.修改表名字 alter tab…

【Redis】Redis内存使用优化方法

目录 1. 数据结构选择和优化 2. 内存优化策略 配置文件优化 内存碎片整理 3. 过期策略和持久化配置 4. 连接和客户端优化 5. 监控和调优 6. 硬件和部署优化 7. 使用虚拟内存 8. Redis Cluster和分片 9. 内存碎片整理与优化 10. 使用内置命令和功能 11. 操作系统和…

浅谈golang字符编码

1、 Golang 字符编码 Golang 的代码是由 Unicode 字符组成的&#xff0c;并由 Unicode 编码规范中的 UTF-8 编码格式进行编码并存储。 Unicode 是编码字符集&#xff0c;囊括了当今世界使用的全部语言和符号的字符。有三种编码形式&#xff1a;UTF-8&#xff0c;UTF-16&#…

2024年项目进度控制软件大比拼:找出适合您团队的最佳工具

本文整理了9大热门项目进度控制软件&#xff1a;PingCode、Worktile、Monday.com、Asana、Trello、Jira、ClickUp、Wrike、Zoho Projects。并且进行详细介绍对比。 在项目管理工具的选择上&#xff0c;不同规模的团队有着各自的需求和偏好。例如&#xff0c;小型团队倾向于选择…

新手搭建Magic-API

项目场景&#xff1a; 我本是一个前端和GIS开发工程师&#xff0c;但新单位并没有配置完整的开发团队&#xff0c;确切说目前只有我一个人做开发&#xff0c;那么肯定避免不了要研究下后端。最近有一个小程序要开发&#xff0c;管理平台我直接用的fastAdminthinkphp写完了页面…

终极版本的Typora上传到博客园和csdn

激活插件 下载网址是这个&#xff1a; https://codeload.github.com/obgnail/typora_plugin/zip/refs/tags/1.9.4 解压之后这样的&#xff1a; 解压之后将plugin&#xff0c;复制到自己的安装目录下的resources 点击安装即可&#xff1a; 更改配置文件 "dependencies&q…

XL5300 dTOF测距模块 加镜头后可达7.6米测距距离 ±4%测距精度

XL5300 直接飞行时间&#xff08;dToF&#xff09;传感器是一个整体方案dTOF 模组&#xff0c;应用设计简单。片内集成了单光子雪崩二极管&#xff08;SPAD&#xff09;接收阵列以及VCSEL激光发射器。利用自主研发的 SPAD 和独特的ToF 采集与处理技术&#xff0c;XL5300模块可实…

选择游戏服务器后期的安全维护有哪些?

随着科技的快速发展&#xff0c;网络行业也逐渐兴起&#xff0c;其中游戏行业也步入了人们的日常生活当中&#xff0c;网络游戏对于服务器的要求也是比较高的&#xff0c;大型的网络游戏需要有着高防御力的服务器&#xff0c;并根据企业自身的业务需求来选择服务器的配置&#…

软件产品进行确认测试有什么好处?第三方软件测试机构分享

软件确认测试是一项旨在验证软件是否符合预期需求和规格的测试活动。通过确认测试&#xff0c;您可以确保软件的功能、性能和用户界面的符合程度&#xff0c;从而降低软件发布后出现问题的风险。 一、软件产品进行确认测试的好处   1、减少软件发布后修复问题的成本。通过及…

python 版本管理工具 pyenv-win 安装

一、下载 pyenv pyenv-win 使用 powershell 下载 Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" -OutFile "./install-pyenv-win.ps1"; &"./ins…

Vue59-全局事件总线:任意组件间通信

一、原理图 只是总结出的经验&#xff0c;不是新的API&#xff01; 二、x的要求&#xff1a; 1、保证x被所有组件看见&#xff1b; 2、x可以调用的到$on&#xff0c;才能绑定事件&#xff0c;还能调用到&#xff1a;$of&#xff0c; $emit&#xff1b; 三、x的创建&#xff…

机器学习课程复习——奇异值分解

1. 三种奇异值分解 奇异值分解(Singular Value Decomposition, SVD)包含了: 完全奇异值分解(Complete Singular Value Decomposition, CSVD)紧奇异值分解(Tight Singular Value Decomposition, TSVD)截断奇异值分解(Truncated Singular Value Decomposition, TSVD)no…

大模型日报2024-06-19

大模型日报 2024-06-19 大模型资讯 大模型产品 SiteForge - AI网站生成器 摘要: 通过AI生成线框、网站规划和品牌内容&#xff0c;SiteForge帮助小企业和营销团队在几分钟内创建SEO优化网站&#xff0c;节省上千美元。 Summit: 你的AI生活教练 摘要: Summit是一款AI生活教练应用…