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;//布  对应   0
	if(c=='C') return 1;//锤  对应   1
	if(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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ESP-Mesh-Lite自组网方案,乐鑫ESP32无线联网应用,启明云端乐鑫代理商

随着物联网技术的飞速发展&#xff0c;智能交互生活逐渐成为现代生活的一部分。乐鑫以其ESP-Mesh-Lite网络技术&#xff0c;为智能设备领域带来了革命性的变革。 ESP-Mesh是基于Wi-Fi协议自主研发的无线Mesh组网方案&#xff0c;通过ESP32系列SoC的高性能处理能力和丰富的通信…

http缓存及http2配置

http缓存及http2配置极大提高了网页加载得速度 1.1 nginx安装 首先是需要安装nginx 去官网下载windows版本的安装包 nginx 命令 nginx start //启动 nginx -s stop nginx -s reload // 重新运行 tasklist /fi "imagename eq nginx.exe" //进程 把打包好的文件copy…

Python4 操作MySQL数据库

通过python的pymysql库连接到本地的MySQL数据库&#xff0c;并执行查询操作来获取数据&#xff0c;然后打印出每一行的数据&#xff0c;这里以一个简单的学生表为例进行介绍。 1. MySQL的安装与数据准备 首先需要安装MySQL&#xff0c;在安装完成之后使用Navicat与本地数据库…

数据分析:RT-qPCR分析及R语言绘图

介绍 转录组分析是一种用于研究细胞或组织中所有RNA分子的表达水平的高通量技术。完成转录组分析后&#xff0c;科学家们通常需要通过定量实时聚合酶链式反应&#xff08;qRT-PCR&#xff09;来验证二代测序&#xff08;Next-Generation Sequencing, NGS&#xff09;结果的可靠…

就业市场挑战重重,求职者如何进入Salesforce生态系统?

目前&#xff0c;就业市场充满挑战&#xff0c;轻松进入Salesforce生态系统的日子已经一去不复返了。尽管入门级角色仍然存在&#xff0c;但市场上的申请者数量已超过其需求。成千上万的求职者争夺有限的职位&#xff0c;因此从人群中脱颖而出需要制定战略方法&#xff0c;求职…

3d模型有个虚拟外框怎么去除?---模大狮模型网

在3D建模和渲染过程中&#xff0c;虚拟外框(Bounding Box)是一个常见的显示元素&#xff0c;用于表示模型的包围盒或选择状态。尽管虚拟外框在一些情况下有其作用&#xff0c;但在最终渲染或呈现阶段&#xff0c;我们通常希望清除这些辅助显示&#xff0c;以展示纯粹的模型效果…

JAVAEE之网络原理(2)_传输控制协议(TCP)的连接管理机制,三次握手、四次挥手,及常见面试题

前言 在上一节中&#xff0c;我们简单介绍了 TCP 协议的相关概念和格式&#xff0c;而且还介绍了TCP 协议原理中的 确认应答机制、超时重传机制&#xff0c;在本节中我们将会继续介绍 TCP协议原理中的其他机制。 连接管理机制&#xff08;安全机制&#xff09; 在正常情况下&…

搭建musetalk数字人的步骤

生成数字人的视频效果 搭建步骤 下载git代码 git clone https://github.com/TMElyralab/MuseTalk.git创建conda环境 (建议使用 python 版本 >3.10 和 cuda 版本 11.7。) conda create -n musetalk python3.10进入conda环境 conda activate musetalk下载项目依赖包 pip…

安装免费版的jfrog artifactory oss

1、下载 软件&#xff0c;本案例安装的是 jfrog-artifactory-oss-7.59.11-linux.tar.gz https://releases.jfrog.io/artifactory/bintray-artifactory/org/artifactory/oss/jfrog-artifactory-oss/ 2、解压下载下来的压缩包 tar zxf jfrog-artifactory-oss-7.59.11-linux.tar…

晨持绪科技:抖音小店的前景究竟怎么样

随着移动互联网的迅猛发展&#xff0c;短视频平台快速崛起并逐渐成为人们日常生活中不可或缺的一部分。作为国内领先的短视频平台&#xff0c;抖音在近年推出了“抖音小店”功能&#xff0c;为商家提供了一个新兴的、流量巨大的电商渠道。这一功能的推出不仅改变了传统的购物方…

Sui主网升级至V1.27.2版本

其他升级要点如下所示&#xff1a; 重点&#xff1a; #17245 增加了一个新的协议版本&#xff0c;并在开发网络上启用了Move枚举。 JSON-RPC #17245: 在返回的JSON-RPC结果中增加了对Move枚举值的支持。 GraphQL #17245: 增加了对Move枚举值和类型的支持。 CLI #179…

Linux进程概念(个人笔记)

Linux进程概念 1.冯诺依曼体系结构2.操作系统&#xff08;先描述&#xff0c;再组织&#xff09;3.进程3.1查看进程的方式3.2通过系统调用获取进程标识符3.4查看进程中常见字段状态的指令3.3fork创建子进程3.3.1fork的原理 3.4进程状态3.5进程优先级3.5.1Linux内核的调度队列与…

001、DM8安装

参照&#xff1a;https://eco.dameng.com/document/dm/zh-cn/pm/install-uninstall.html 1. 准备工作 操作系统查看 [rootora19c ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)新建用户 [rootora19c ~]# groupadd dinstall -g 2001 [rootora19c ~]# …

linux写代码环境和工具

基础指令 目录 前言 二、yum工具的使用 1.yum是什么&#xff1f; 2.查看软件包 3.配置sudo 4.如何卸载软件 三、vim的使用 1. vim的基本概念 2. vim的基本操作 3. vim正常模式命令集 4.简单vim配置 四、Linux编译器-gcc/g使用 1、格式 2、gcc选项 3.gcc/g工作和…

jpg格式图片无法打开可以修复吗?有哪些方法?

JPG的图片打不开怎么办呢&#xff1f;当JPG图片打不开的时候&#xff0c;我们需要先了解下具体的原因&#xff0c;是因为格式不支持&#xff0c;还是因为图片文件损坏。不同的原因&#xff0c;解决的方法也会不同&#xff0c;比如图片损坏&#xff0c;我们就需要对图片修复处理…

分页插件结合collection标签后分页数量不准确的问题

问题1:不使用collection 聚合分页正确 简单列子 T_ATOM_DICT表有 idname1原子12原子23原子34原子45原子56原子6 T_ATOM_DICT_AUDIT_ROUTE表审核记录表有 idaudit1拒绝1通过4拒绝 我要显示那些原子审核了,我把两个表inner join 就是那些原子审核过了 idnameaudit1原子1拒绝…

“Photoshop AI插件:StartAI的全面使用攻略

随着人工智能技术的飞速发展&#xff0c;Photoshop作为设计师们不可或缺的工具&#xff0c;也在不断地融入AI技术&#xff0c;以提升设计效率和效果。在2024年&#xff0c;PSAI插件StartAI因其强大的功能和易用性&#xff0c;成为了Photoshop用户的得力帮手。下面来给大家详细介…

Linux安装kvm虚拟机

kvm是基于内核的虚拟机&#xff0c;为什么要用kvm不用vmware、virtual box… 只有一个原因&#xff0c;它非常快&#xff01;本机使用linux开发也是因为它快&#xff01;linux在老电脑上都能流畅运行&#xff0c;更别说现代电脑&#xff0c;如果你觉得装Linux并没有比win快多少…

企业设备管理现状与解决方案

在当今企业运营中&#xff0c;设备管理作为保障生产稳定、提升效率的重要环节&#xff0c;其复杂性和挑战性日益凸显。无论是生产车间、石油化工、物业小区&#xff0c;还是消防器材、建筑施工等领域&#xff0c;都面临着设备故障频发、维修流程繁琐等共性问题。 为了帮助企业…

Python微磁学磁倾斜和西塔规则算法

&#x1f4dc;有限差分-用例 &#x1f4dc;离散化偏微分方程求解器和模型定型 | &#x1f4dc;三维热传递偏微分方程解 | &#x1f4dc;特定资产期权价值偏微分方程计算 | &#x1f4dc;三维波偏微分方程空间导数计算 | &#x1f4dc;应力-速度公式一阶声波方程模拟二维地震波…