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

题目

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

输入格式:

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

分析

  • 求解双方胜、负、平次数,只需每次输入数据时进行判断然后累加即可,注意一人胜另一人负。
  • 求解双方胜利次数最多的手势,且如果解不唯一,选择字母序小的。可用数组下标来顺序对应B、C、J来解决。
  • 可使用一个结构体来存储,成员包括victory,draw,defeat,count[3]。声明两个结构体变量时,声明为全局变量。这样编译器会将变量初始化,不用再自己另外再初始化。

AC代码

#include<iostream>
using namespace std;
struct node
{int count[3];int victory,draw,defeat;
}A,B;
int game(char A,char B)
{if(A==B)return 0;else if((A=='C'&&B=='J')||(A=='B'&&B=='C')||(A=='J'&&B=='B'))return 1;elsereturn 2;
}int main()
{int i,N;char ch1,ch2; cin>>N;for(i=0;i<N;i++){cin>>ch1>>ch2;int temp=game(ch1,ch2);if(temp==0){A.draw++;B.draw++;}else if(temp==1){A.victory++;B.defeat++; if(ch1=='B')A.count[0]++;	else if(ch1=='C')A.count[1]++;elseA.count[2]++;}else{B.victory++;A.defeat++;if(ch2=='B')B.count[0]++;	else if(ch2=='C')B.count[1]++;elseB.count[2]++;}}cout<<A.victory<<" "<<A.draw<<" "<<A.defeat<<endl;cout<<B.victory<<" "<<B.draw<<" "<<B.defeat<<endl;int max_A=A.count[0],max_B=B.count[0],flag1=0,flag2=0;for(i=1;i<3;i++){if(A.count[i]>max_A){max_A=A.count[i];flag1=i; }if(B.count[i]>max_B){max_B=B.count[i];flag2=i; }		}if(flag1==0) cout<<"B ";else if(flag1==1)cout<<"C ";elsecout<<"J ";if(flag2==0) cout<<"B";else if(flag2==1)cout<<"C";elsecout<<"J";return 0;
}

如果小伙伴有任何问题或者建议,欢迎评论区留言或者私信博主哦

更多题解
pat 乙级 题解汇总(持续更新)(C++)

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

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

相关文章

Terminal中输入一行命令快速移动光标至行首行尾

Linux&#xff1a;### ①快速移动光标至行首 **Home或CtrlA ** ②快速移动光标至行尾 **End或CtrlE ** ③从光标处开始删除&#xff0c;直到行尾 **CtrlK ** ④到下一行 **CtrlN 或 方向键&#xff1a;↓ ** ⑤到上一行 **CtrlP 或 方向键&#xff1a;↑ **

nio2和nio2_列出和过滤NIO.2中的目录内容

nio2和nio2在Java 7发行之前&#xff0c;列出目录内容的领域并没有发生太多事情。但是&#xff0c;由于NIO.2引入了一种新的方法来做到这一点&#xff0c;因此覆盖这一领域可能是值得的。 NIO.2的一大优点是能够在一个方法调用中立即使用列表和过滤。 这为与文件系统相关的大多…

pat 乙级 1033 旧键盘打字(C++)

题目 旧键盘上坏了几个键&#xff0c;于是在敲一段文字的时候&#xff0c;对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键&#xff0c;打出的结果文字会是怎样&#xff1f; 输入格式&#xff1a; 输入在 2 行中分别给出坏掉的那些键、以及应该输入的文…

修改typora主题的字体

简 述&#xff1a; 在 mac 中修改 typora 主题的英文和中文的字体&#xff0c;使得码字更加舒服&#xff08;win 也有效&#xff09;。 [TOC] 本文初发于 “偕臧的小站“&#xff0c;同步转载于此。 书写环境&#xff1a; &#x1f4bb;&#xff1a; MacOS 10.14.6 &#x1…

在ADF 12.2.1.3中使用基于JSON的REST Web服务

以前&#xff0c;我曾发布过有关在ADF中使用基于ADF BC的REST Web服务的信息。 现在&#xff0c;本文讨论使用通用数据控件使用基于JSON的REST Web服务。 您也可以查看有关Web服务的先前文章&#xff0c;以获取更多信息。 在ADF 12.2.1中使用应用程序模块快速创建SOAP Web服务…

C++中字符型和整型的关系

文章目录结论测试字符与字符字符与数字实用小技巧字符转数字数字转字符ASCII的特点结论 字符型就是整型&#xff0c;对应的整数由ASCII(美国信息交换标准代码)规定。字符和整数&#xff0c;或者字符和字符进行运算时&#xff0c;结果为int。与整型的运算规则完全一样。 测试 …

hibernate 调试_Hibernate调试–查找查询的来源

hibernate 调试Hibernate为何在程序的哪个部分以及在哪个部分中生成给定SQL查询并不总是立即的&#xff0c;尤其是当我们处理的是我们自己编写的代码时。 这篇文章将介绍如何配置Hibernate查询日志记录&#xff0c;并将其与其他技巧一起使用&#xff0c;以找出在程序中执行给定…

Ubuntu终端多窗口分屏Terminator

1、安装 Terminator最大的特点就是可以在一个窗口中打开多个终端 sudo apt-get install terminator2、快捷键 F11 全屏 CtrlShiftE 垂直分割窗口 CtrlShiftO 水平分割窗口CtrlShiftC 复制 CtrlShiftV 粘贴CtrlTab 在分割的各窗口之间切换 CtrlShiftPageDown 在相邻的两个窗…

专业QA如何实施可靠的CI / CD管道?

过时的传统软件开发方法并不能接管不断升级的市场趋势&#xff0c;并且这些方法缺乏解决方案&#xff0c;这些解决方案无法满足引入“ 持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09; ”的快速软件发布的日益增长的需求。 除CI / CD之外&#xff0c;…

C语言中的宏定义

简单宏定义 简单的宏定义有如下格式&#xff1a; [#define指令&#xff08;简单的宏&#xff09;]  #define 标识符替换列表替换列表是一系列的C语言记号&#xff0c;包括标识符、关键字、数、字符常量、字符串字面量、运算符和标点符号。当预处理器遇到一个宏定义时&…

solr analyzer_查看您的Solr缓存大小:Eclipse Memory Analyzer

solr analyzerSolr使用不同的缓存来防止请求期间过多的IO访问和计算。 如果索引不是很频繁发生&#xff0c;则可以通过使用这些缓存来获得巨大的性能提升。 根据索引数据的结构和缓存的大小&#xff0c;它们可能会变得很大&#xff0c;并占用堆内存的很大一部分。 在本文中&…

好用的电脑软件总结

一 科研 1 阅读软件 Citavi 文献阅读软件小绿鲸SCI 文献翻译软件文献翻译阅读软件 &#xff1a;Quicker沙拉查词 来自 https://mubu.com/doc/vWDgwhwdg0 注&#xff1a;沙拉查词可能出现翻译后仍然保持选中的状态&#xff0c;鼠标无法自由移动&#xff0c;针对这种情况&#…

笔记本启动与关闭自带键盘

Win S打开搜索界面 输入cmd 以管理员权限打开 执行以下命令 如果是关闭键盘 sc config i8042prt start disabled如果是开启键盘 sc config i8042prt startauto对应的注册表位置&#xff1a; [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt] "S…

lucene快速入门_为Lucene选择快速唯一标识符(UUID)

lucene快速入门大多数使用Apache Lucene的搜索应用程序都会为每个索引文档分配一个唯一的ID&#xff08;即主键&#xff09;。 尽管Lucene本身不需要这样做&#xff08;它可能不太在乎&#xff01;&#xff09;&#xff0c;但应用程序通常需要它以后通过其外部ID替换&#xff0…

vim字符串替换

vi/vim 中可以使用 &#x1f612; 命令来替换字符串。以前只会使用一种格式来全文替换&#xff0c;今天发现该命令有很多种写法(vi 真是强大啊&#xff0c;还有很多需要学习)&#xff0c;记录几种在此&#xff0c;方便以后查询。 替换    : s/vivian/sky/ 替换当前行第一个 v…

使用网真和WAD热部署Kubernetes

在Kubernetes环境中测试企业应用程序时&#xff0c;更改&#xff0c;重新打包和重新部署应用程序的周转可能变得非常高。 网真旨在通过将本地运行的进程代理到我们的Kubernetes集群中来减轻这种情况&#xff0c;就像本地进程是集群的一部分一样。 如果我们将这种方法与诸如WAD之…

git clone 项目出现 Failed to connect to github.com port 443: Timed out

将命令号中的https 改为git 就可以解决这个问题的出现

使用eclipse调试ns3-配置说明

Tips&#xff1a; 1&#xff0c; 安装eclipse时注意选择C开发组件&#xff1b; 环境配置参考&#xff1a;https://www.cnblogs.com/zlcxbb/p/3852810.html 第一步&#xff0c;新建C工程&#xff1b; 第二步&#xff0c;在project explorer中右键属性&#xff0c;如下图&#…