PTA乙级-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
一、题解要点
- 首先是将手势转化为数字,这是一种很聪明的手法,给程序逻辑编写带来很大的便利,尤其是在判断胜负以及存储胜利手势的时候
- (j+1)%3 == y 这句代码来判断胜负,其中因为各个手势以一定的规律存储(0胜1,1胜2,2胜0),所以这段代码可以直接判断胜负
二、具体实现
#include<iostream>
#include<string.h>
using namespace std;/*用来将手势转化为数字的函数*/
int change(char c){if(c == 'B') return 0;if(c == 'C') return 1;if(c == 'J') return 2;
}/*用来判断那种手势赢的最多的函数*/
char judge(int s[]){int shoushi=-1,max=-1;for(int i=0;i<3;i++){if(max<s[i]){max = s[i];shoushi =i;}}switch(shoushi){case 0:return 'B'; break;case 1:return 'C'; break;case 2:return 'J'; break; }
}int main(){int jushu,j,y; //储存局数、甲乙手势转化后的数字 int jia_ju[3]={0},yi_ju[3]={0}; //储存甲乙胜平负的场数 int jia_shou[3]={0},yi_shou[3]={0}; //储存甲乙胜利的手势 char jia,yi; //用来接收输入的手势 cin>>jushu; //输入局数for(int i=0;i<jushu;i++){cin>>jia>>yi;j = change(jia);y = change(yi);if(j == y){ //平局的话就把甲乙的平局数加一 jia_ju[1]++;yi_ju[1]++;}else if((j+1)%3 == y){ //甲胜乙jia_ju[0]++; //甲胜局加一 yi_ju[2]++; //乙负局加一 jia_shou[j]++; //甲以何种手势胜的加一 }else{ //乙胜甲 jia_ju[2]++;yi_ju[0]++;yi_shou[y]++;}}/*输出甲乙的胜平负*/cout<<jia_ju[0]<<" "<<jia_ju[1]<<" "<<jia_ju[2]<<endl; cout<<yi_ju[0]<<" "<<yi_ju[1]<<" "<<yi_ju[2]<<endl;/*输出甲乙最多的胜的手势*/cout<<judge(jia_shou)<<" "<<judge(yi_shou)<<endl;return 0;
}
总结
重点在于手势转数字的操作以及之后的判胜操作,细节繁多,写的时候一定要注意。
PTA乙级-1018 锤子剪刀布 c++相关推荐
- C++学习之路 | PTA乙级—— 1018 锤子剪刀布 (20分)(精简)
1018 锤子剪刀布 (20分) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: FigCJB.jpg 现给出两人的交锋记录,请统计双方的胜.平.负次数, ...
- PAT乙级 1018 锤子剪刀布 (JAVA)
1018 锤子剪刀布 (20 分) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什 ...
- pat 乙级 1018 锤子剪刀布(C++)
题目 两人玩锤子剪刀布,现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 N(≤105 ),即双方交锋的次数.随后 N 行 ...
- [PAT乙级]1018 锤子剪刀布
大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...
- PAT乙级(1018 锤子剪刀布)
大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...
- PAT乙级 1018 锤子剪刀布 (20 分)
大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...
- PAT 乙级 1018 锤子剪刀布 (20分)
大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...
- PAT乙级 1018 锤子剪刀布
一.题目描述 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输 ...
- PAT——乙级 1018锤子剪刀布
此题如果要用if else做的话,很繁琐,而且很容易出错 tips: 由于scanf使用%c时会将换行符与空格等输入 因此需要在合适的地方加上getchar()吸收空格 另外输入一定要按样例的格式,有 ...
最新文章
- Matlab计算速度优化(矩阵,bsxfun,repmat)
- asp网页设计流量统计代码
- centos中的配置文件
- (转)剖析Delphi中的构造和析构
- 惊!MySQL官网巨变,下载被取消
- java随机产生十个坐标_java中随机坐标
- 是时候详细探究webview了
- [原创]如何从数据库层面检测两表内容的一致性
- [论文阅读] Learning Without Forgetting
- 用友仓库档案boot直接访问html,图文解析用友仓库软件怎样设置档案?
- Java EE开发四大常用框架(1)
- 大型网站应用之海量数据和高并发解决方案总结一二!
- java 用户行为记录_大型网站用户行为记录的一个实现
- c语言随机抽奖小程序,基于C#实现简单的随机抽奖小程序
- java开发手册 - 码出规范 - 要点整理
- 透视投影中已知两平面的单应矩阵,能否求出这两平面的夹角?
- 随机存储器:SRAM、DRAM、SDRAM的区别
- 解决关闭浏览器后再打开,访问网站仍然自动登陆的问题
- DUMN : Deep User Match Network for Click-Through Rate Prediction
- C语言基础题-水仙花数
热门文章
- 不止是上云,更是上岸
- 让编程不再迷茫--java编程入门
- 我的笔记(主要是尚品汇前台项目)
- mosquitto c语言编程,MQTT通讯协议(mosquitto)发布订阅例子C语言实现
- 算法工程师:在算法“黑箱”中保障用户知情权
- Unity_四元素Quaternion
- 词性标注,句法分析中NN,NP是什么意思
- 高性能家用计算机能干嘛,买台服务器当家用电脑是种什么体验?那酸爽用过才会懂...
- 从摆地摊到开网店,这对小夫妻一年狂赚45万元
- unet图片数据增强_Unet