【PAT】1018 锤子剪刀布 (20)(20 分)
1018 锤子剪刀布 (20)(20 分)
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:

现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第1行给出正整数N(<=10^5^),即双方交锋的次数。随后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
C++代码如下:
#include<iostream>
using namespace std;
struct info {
int num; //不同手势转换后的数字
int vict=; //赢的次数
int equ=; //平的次数
int defe=; //输的次数
int ans[] = { ,, }; //数组三个元素对应的分别为手势 C、J、B赢的次数
};
const int data_s[][] = { { ,,- }, //根据手势对应的数字查表,值为1表示甲赢乙输
{ -,, }, //值为0表示甲乙平
{ ,-, } }; //值为-1表示甲输乙赢
char gesture(const info &a) { //赢的次数最多的手势
if (a.ans[] > a.ans[]) {
if(a.ans[]<=a.ans[]) return 'B';
else return 'C';
}
else if (a.ans[] == a.ans[]) {
if (a.ans[] <= a.ans[]) return 'B';
else return 'C';
}
else {
if (a.ans[] <= a.ans[]) return 'B';
else return 'J';
}
}
int transform(const char c) { //将不同的手势转换成数字方便查表
if (c == 'C') return ;
else if (c == 'J') return ;
else if (c == 'B') return ;
}
int main() {
int n;
cin >> n;
info a, b;
char ah, bh;
while (n--) {
cin >> ah >> bh;
a.num = transform(ah);
b.num = transform(bh);
if (data_s[a.num][b.num] == ) {
a.vict++;
a.ans[a.num]++; //将对应手势赢的次数加1
b.defe++;
}
else if (data_s[a.num][b.num] == -) {
b.vict++;
b.ans[b.num]++; //将对应手势赢的次数加1
a.defe++;
}
else {
a.equ++;
b.equ++;
}
}
cout << a.vict << ' ' << a.equ << ' ' << a.defe << endl;
cout << b.vict << ' ' << b.equ << ' ' << b.defe << endl;
cout << gesture(a) << ' ' << gesture(b) << endl;
return ;
}
【PAT】1018 锤子剪刀布 (20)(20 分)的更多相关文章
- PAT 1018 锤子剪刀布(20)
1018 锤子剪刀布 (20)(20 分) 大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方 ...
- PAT B1018 锤子剪刀布 (20 分)
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 ...
- PAT (Basic Level) Practice 1018 锤子剪刀布 分数 20
大家应该都会玩"锤子剪刀布"的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入 ...
- PAT 1018 锤子剪刀布
https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344 大家应该都会玩“锤子剪刀布”的游戏:两人同时 ...
- PAT——1018. 锤子剪刀布
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行给出正整数N( ...
- PAT 1018. 锤子剪刀布 (20)
现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第1行给出正整数N(<=105),即双方交锋的次数.随后N行,每行给出一次交锋的信息,即 ...
- PAT(B) 1018 锤子剪刀布(C:20分,Java:18分)
题目链接:1018 锤子剪刀布 分析 用一个二维数组保存两人所有回合的手势 甲乙的胜,平,负的次数刚好相反,用3个变量表示就可以 手势单独保存在signs[3]中,注意顺序.题目原文:如果解不唯一,则 ...
- PAT乙级 1018. 锤子剪刀布 (20)
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
- PAT 乙级 1018 锤子剪刀布 (20) C++版
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...
随机推荐
- 服务器IP安全策略限制网络访问
https://jingyan.baidu.com/article/3c343ff714d4890d377963cd.html https://www.icbase.com/TestGetUrl.as ...
- JS中双等号“==”使用情况
1.判断一个对象的值是否存在 var obj = {}; if(obj.a == null) { // todo } 2. 判断函数入参是否存在 function (a, b) { if(a == n ...
- Java时间格式转换工具类
把当前时间修改成指定时间 //把当前时间修改成指定时间 public String dateUtil(Integer seconds, String dateFormatPattern){ Date ...
- 1.phpcms的安装和卸载文件
一.安装文件 ①languages文件夹 语言包:zh-cn\order.lang.php //样式<?php $LANG['order_new'] = '订单管理'; ?> ②templ ...
- node.js 基础篇
日志输出方式 node test.js 2>error.log 1>info.log 如果需要日志文件追加 node test.js 2>>error.log 1>> ...
- Groovy/Spock 测试导论
Groovy/Spock 测试导论 原文 http://java.dzone.com/articles/intro-so-groovyspock-testing 翻译 hxfirefox 测试对于软件 ...
- 常见踩坑案例(二)-Request method 'POST' not supported
一 前言 最近涉及到与前后端的数据对接,按道理来说没一点压力结果被一前端童鞋带坑里去了(不过也是很久没写过这种前后端分离进行联调的事情了,如果是一个人全套弄的话就不会出现下面问题). 二 Reques ...
- Python标准库内置函数complex介绍
from:http://www.jb51.net/article/57798.htm 本函数可以使用参数real + imag*j方式创建一个复数.也可以转换一个字符串的数字为复数:或者转换一个数字为 ...
- 并行运行多个python虚拟机
之前遇到一个问题,需要将场景服务这个模块拆分出来,用独立的一个线程去执行.使用独立的线程好处就是,逻辑写的可以相对简单粗暴点,不必考虑到大量的场景服务逻辑卡主线程的情况. 由于我们服务器之前是使用py ...
- Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析【转】
转自:http://www.latelee.org/embedded-linux/porting-linux-tstest-code.html 本文是作者对tslib库的ts_test.c文件进行分析 ...