B1018 锤子剪刀布 (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

思路

将3个字母对应成3个数字0,1,2,然后取模循环即可,类似循环队列的思想。

注意在设置对应时,就考虑字母序,最后以字母序最低的为默认值,只有赢得的次数更多才能取代地位

注意数组初始化,对于c++,一维数组,可以这样,自动全部置为0

int a[5]={0};

AC代码

/*
0->1
1->2
2->0
(i+1)%3
这样的前进序列构成循环,如果刚好对比数与前进位相同,那么可以定义为输或赢
*/
#include<bits/stdc++.h>
using namespace std;
int main(void){
map<char,int> p;
p['B'] = 0;
p['C'] = 1;
p['J'] = 2;
char mp[3] = {'B', 'C', 'J'};
char a,b;
int n,yeah1=0,yeah2=0;
scanf("%d",&n);
int time = n;
int sheng1[3]={0};
int sheng2[3]={0};
while(n--){
getchar();
scanf("%c %c",&a,&b);/*0<1 1<2 2<0*//*0->1 2 1 2 0*/
if(p[b]==(p[a]+1) % 3){/*甲方赢了*/
yeah1++;
/*要记录此刻是谁帮甲赢了此局,同时要有每一次的记录*/
sheng1[p[a]]++;
}
else if(p[a] != p[b]){/*平手*/
yeah2++;
sheng2[p[b]]++;
}
}
printf("%d %d %d\n", yeah1, time-yeah1-yeah2,yeah2);
printf("%d %d %d\n", yeah2, time-yeah1-yeah2,yeah1);
/*要对3个手势排序*/
int id1 = 0, id2 = 0;
for(int i = 0; i < 3; i++) {
if(sheng1[i] > sheng1[id1]) id1 = i;
if(sheng2[i] > sheng2[id2]) id2 = i;
}
printf("%c %c\n", mp[id1], mp[id2]);
return 0;
}

B1018 锤子剪刀布 (20分)的更多相关文章

  1. PAT Basic 1018 锤子剪刀布 (20 分)

    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 ...

  2. PAT B1018.锤子剪刀布(20)

    一个没有通过,不知道为何 #include <cstdio> int change(char c) { if(c == 'B') return 0; if(c == 'C') return ...

  3. 【PAT】1018 锤子剪刀布 (20)(20 分)

    1018 锤子剪刀布 (20)(20 分) 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算 ...

  4. PAT乙级 1018. 锤子剪刀布 (20)

    1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...

  5. PAT-乙级-1018. 锤子剪刀布 (20)

    1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...

  6. 牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)

    锤子剪刀布 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出 ...

  7. PAT 乙级 1018 锤子剪刀布 (20) C++版

    1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...

  8. PAT B1018 锤子剪刀布 (20 分)

    大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 ...

  9. 【算法笔记】B1018 锤子剪刀布

    1018 锤子剪刀布 (20 分) 大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示: 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. ...

随机推荐

  1. hibernate课程 初探一对多映射2-1 一对多映射简介

    1 在数据库中用主外键的形式实现一对多的映射关系 2 hibernate 在一方设置集合set,表示多方

  2. 用 React 编写的基于Taro + Dva构建的适配不同端(微信小程序、H5、React-Native 等)的时装衣橱

    前言 Taro 是一套遵循 React 语法规范的 多端开发 解决方案.现如今市面上端的形态多种多样,Web.React-Native.微信小程序等各种端大行其道,当业务要求同时在不同的端都要求有所表 ...

  3. 从零开始的全栈工程师——JS面向对象(初篇)

    面向对象编程 面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式.它使用先前建立的范例,包括模块化,多态和封装几种技术.今天,许多流行的编程语言(如Java,JavaScript,C#,C+ ...

  4. F12 chrome开发者工具

    1.Network详解篇 : https://blog.csdn.net/qq_39208536/article/details/79304148 2.sources: js调试篇  http://b ...

  5. css的三个特性 背景透明设置

    关于行内元素(补充一点) 行内元素只能容纳文本或其他行内元素.(a特殊a里面可以放块级元素) 例子: 关于行高tip: 选择器的嵌套层级不应大于3级,位置靠后的限定条件应尽可能的精确. 属性定义必须另 ...

  6. Vue.js双向数据绑定模板渲染

    准备知识 1. 前端开发基础 html.css.js2. 前端模块化基础3. 对ES6有初步的了解 vuejs官网:cn.vuejs.org HTML: <!DOCTYPE html> & ...

  7. 在线图片转base64

    function ImgToBase64(url, callback, outputFormat) { // outputFormat 用于指定输出格式的,遵循 MIME 标准 var canvas ...

  8. attachEvent方法的作用

    用于HTML内代码层和UI层分离.比如,你要给一个按钮增加一个单击事件,你会怎么做?<input type="button" id="theBtn" va ...

  9. Maven报错:Missing artifact jdk.tools:jdk.tools:jar:1.6

    1.jdk.tools:jdk.tools是与JDK一起分发的一个JAR文件,可以如下方式加入到Maven项目中: <dependency>    <groupId>jdk.t ...

  10. Firefox浏览器 页面滑动卡帧问题

    在设置里关闭"平滑滚动"选项即可,猎豹似乎没有,遭黑