PAT B1018.锤子剪刀布

news2024/11/17 11:32:50

题目描述
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图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;
}

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

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

相关文章

【计算机网络仿真实验-实验2.7】单臂路由

实验2.7 单臂路由 1. 实验拓扑图 2. 测试连通性 测试PC1 PC2 PC3 之间的连通性 无法ping通&#xff0c;因为它们处在不同的网段&#xff0c;而二层交换机不具备路由功能&#xff0c;因此没办法接通 3. 在交换机上创建vlan10&#xff0c;并将端口0/2划分到vlan10中 Switch>…

[Python学习篇] Python公共操作

公共运算符 运算符描述支持的容器类型合并字符串、列表、元组*复制字符串、列表、元组in元素是否存在字符串、列表、元组、字典not in元素是否不存在字符串、列表、元组、字典 示例&#xff1a; 字符串 str1 ab str2 cd print(str1 str2) # abcd print(str1 * 3) # ab…

【网络安全学习】漏洞扫描:- 02- nmap漏洞扫描

1.nmap的介绍 Nmap是一款功能强大的网络探测和安全扫描工具&#xff0c;可以对目标进行端口扫描、服务探测、操作系统指纹识别等操作。 Nmap自带了许多内置的NSE脚本&#xff0c;它们可以根据不同的目标和场景来执行不同的功能。这些脚本存放在Nmap安装目录**/usr/share/nmap…

防爆监测系统:工业安全百科

防爆监测系统&#xff0c;作为现代工业安全领域的重要组成部分&#xff0c;对于预防和控制爆炸事故具有不可替代的作用。该系统集成了先进的传感技术、信号处理技术以及自动控制技术&#xff0c;实现对工业生产环境中潜在爆炸因素的实时监测和预警。 防爆监测系统能够精确识别…

【代码随想录】【算法训练营】【第43天】 [518]零钱兑换II [377]组合总和IV [卡码57]爬楼梯

前言 思路及算法思维&#xff0c;指路 代码随想录。 题目来自 LeetCode。 部分题目来自卡码网。 day 43&#xff0c;极其困难的周三~ 题目详情 [518] 零钱兑换II 题目描述 518 零钱兑换II 解题思路 前提&#xff1a;假设每一种面额的硬币有无限个&#xff0c;求组合数…

LVGL开发教程-Label文本

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 ​编辑 1. 文本显示 2. 使用字体 总结 前言 在嵌入式系统开发中&#xff0c;文本显示是一项基本而重要的功能。使用 LittlevGL&#xff08;LVGL&#xff09;库&#xff0c;我们可以轻松地创建…

华润的超市卡有什么用?

现在都很少有人会直接去超市买东西了&#xff0c;一般都是网购或者叫外卖啥的 最近我朋友送了张华润的礼品卡&#xff0c;但是感觉也没什么要买的 一边担心卡过期&#xff0c;一边发愁买什么 还好发现了收卡云啊&#xff0c;最后把卡在收卡云上卖掉了&#xff0c;到账速度贼…

org.springframework.boot:spring-boot-starter-parent:pom:2.3.4.RELEAS

前言 git上拉了一个项目构建过程中无论是clean还是install都报错 注&#xff1a;很看不惯某博主一点简单的经验分享都要开VIP才能查看的作风 org.springframework.boot:spring-boot-starter-parent:pom:2.3.4.RELEASE failed to transfer from https://maven.aliyun.com/rep…

免费的ai创作软件,各维度的盘点一下!

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;其中就包括内容创作领域。近年来&#xff0c;越来越多的免费AI创作软件涌现出来&#xff0c;为广大创作者提供了全新的创作方式和工具。那么&#xff0c;这些软件究…

C语言——扫雷小游戏

扫雷小游戏&#xff1a; 游戏最终效果&#xff1a; 1.先写一下游戏开始的简单界面。 用一个函数来写一下 void menu() {printf(" ---------------------------- \n");printf("| 1.play |\n");printf("| 0.exit …

工业 web4.0,UI 风格令人赞叹

工业 web4.0&#xff0c;UI 风格令人赞叹

揭秘后勤报修管理系统:目的明确,功能设计模块助您轻松管理

在数字化、信息化飞速发展的今天&#xff0c;企业后勤报修也迎来了前所未有的变革。传统的报修方式&#xff0c;如电话报修、纸质报修单等&#xff0c;已逐渐无法满足现代企事业单位对高效、便捷、精准报修服务的需求。因此&#xff0c;后勤报修管理系统应运而生&#xff0c;后…

ThinkPHP5大学生社会实践管理系统

有需要请加文章底部Q哦 可远程调试 ThinkPHP5大学生社会实践管理系统 一 介绍 大学生社会实践管理系统基于ThinkPHP5框架开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈&#xff1a;ThinkPHP5mysqlbootstrapphpstudyvscode 二 功…

Upload-Labs:Pass - 1(JS前端白名单)

Pass_1 1. 上传测试2. 代码审计**获取文件输入的值**&#xff1a;**检查是否选择了文件**&#xff1a;**定义允许的文件类型**&#xff1a;**提取文件的扩展名**&#xff1a;**检查文件类型是否允许上传**&#xff1a;**构建错误消息并提醒用户**&#xff1a; 3.绕过思路3.1 将…

2024-06-19,面试官问的问题

文章目录 1、采用minIO完成了图片存储&#xff0c;采用阿里云OSS服务器存储图片这两个功能面试官理解为重复&#xff0c;面试官又问minIO怎么同步到OSS&#xff1f;2、讲一下ThreadLocal&#xff1f;3、为什么用ThreadLocal存数据&#xff1f;4、redis有几种数据结构&#xff1…

18V-120V降12V300m恒压WT5117

18V-120V降12V300m恒压WT5117 WT5117 是一款专为开关电源设计的集成了 150V 高电压 MOSFET 的 DC-DC 控制器。这个设备具备内置高压启动和自供电功能&#xff0c;能够满足快速启动及低能耗待机状态的需求。 WT5117 配备了自适应降频技术&#xff0c;以提升在低负载条件下的转换…

构建高效、便捷的家校沟通桥梁

在现代教育中&#xff0c;家校之间的有效沟通和协作是确保学生全面发展的关键。搭贝家校管理应用通过一系列强大而便捷的功能&#xff0c;帮助学校和家长实现无缝对接&#xff0c;提供全面的管理和服务。以下是搭贝家校管理应用的主要功能和优势。 &#x1f3eb; 主要功能模…

资源宝库网站!人人必备的神器!

面对网络中海量的内容&#xff0c;一个高效、便捷的网络导航工具&#xff0c;可以帮助我们快速查找使用网络资源。无论是职场精英还是学生党&#xff0c;使用导航网站都可以帮助我们提升效率。下面小编就来和大家分享一款资源宝库网站-办公人导航-实用的办公生活导航网站&#…

docker-compose设置永久启动、自动重启

步骤一 找到 docker-compose.yml 文件 步骤二 vim 打开文件 找到 image: PS&#xff1a;就是为了对齐格式 步骤三 在其下方添加&#xff1a; restart: always而后保存即可

Apple Watch设计原则,让你开发app思路更清晰

Apple Watch 作为一款极具前瞻性的产品&#xff0c;硬件已经发展到 Apple Watch Series 6。智能手表是目前除了手机之外&#xff0c; 最方便人眼观看且较为成熟的商业化硬件。这次加速器活动带给我的触动很大&#xff0c;原以为 Apple Watch 只是一款小众产品&#xff0c;实际上…