首页 > 编程语言 >1018 锤子剪刀布-PAT乙级真题-极简代码-C++

1018 锤子剪刀布-PAT乙级真题-极简代码-C++

时间:2024-06-12 18:31:53浏览次数:29  
标签:极简 PAT map ++ max 真题 int 给出 result

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

输入格式:

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

思考 

因为甲乙出的手势一样,是平局,甲胜,则乙输,甲输,则乙胜。实际上我们只需要记录甲的胜、平、负即可,乙的情况和其完全相反。

用两个map<char,int>,分别记录甲、乙获得胜利的手势,由于map自动以主键为序,所以map中的存放胜利手势顺序就是B、C、J,那么遍历map,只有当前次数严格大于max的时候才进行替换max,这样就能保证并列的时候,输按字母序最小得字母。

代码

#include<iostream>
#include <map>
using namespace std;
char max(map<char, int> themap) {
    int max = 0;
    char maxc = 'B';
    for (auto it = themap.begin(); it != themap.end(); ++it) {
        if (it->second > max)
        {
            max = it->second;
            maxc = it->first;
        }
    }
    return maxc;
}
int main() {
    int num, result[3] = { 0 };//实际上记录的是甲的胜、平、负
    cin >> num;
    map<char, int> vectorA = { {'C',0},  {'B',0},  {'J',0} };
    map<char, int> vectorB = { {'C',0},  {'B',0},  {'J',0} }; 
    char a, b;
    for (int i = 0; i < num; i++) {
        cin >> a >> b;
        if (a == b)
            result[1]++;
        else if ((a == 'C') && (b == 'J') || (a == 'J') && (b == 'B') || (a == 'B') && (b == 'C')) {
            result[0]++;
            vectorA[a]++;
        }
        else {
            result[2]++;
            vectorB[b]++;
        }
    }
    cout << result[0] << " " << result[1] << " " << result[2] << endl;
    cout << result[2] << " " << result[1] << " " << result[0] << endl;
    cout << max(vectorA) << " " << max(vectorB);
    return 0;
}

标签:极简,PAT,map,++,max,真题,int,给出,result
From: https://blog.csdn.net/moqikong6/article/details/139633617

相关文章

  • 【力扣真题】3.哈希表|算法真题程序设计数据结构考研保研复试机试面试秋招春招蓝桥杯
    242.有效的字母异位词给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。示例1:输入:s=“anagram”,t=“nagaram”输出:true示例2:输入:s=“rat”,t=“car”输出:false说明:你可以假设字符串只包含小写字母。力扣题目链接思......
  • xpath使用contains文本定位不到元素的原因及解决方法
    某些情况下,前端开发可能出现如下的代码<uni-viewdata-v-fc36b70f=""class="letter_city_item">"波特兰;"<spandata-v-fc36b70f=""class="gray">PDX</span></uni-view><uni-viewdata-v-fc36b70f=&quo......
  • 【接口自动化测试框架练习】springboot+react+mysql~极简版postman
    可以说是一个toyprogram,chatgpt完成了一部分工作,我也完成了一部分工作,我俩合作的,我占百分之80%,他百分之20%,哈哈没他不行,源码奉上。https://github.com/Jinwenxin/test-api-frontend1.功能简介:分成三部分,如左侧导航栏所示:测试用例管理:测试用例的增删改查以及运行测试套件管理......
  • 在Linux中,如何将二进制文件添加到 $PATH 变量中?
    在Linux系统中,$PATH是一个环境变量,它定义了操作系统在执行命令时搜索可执行文件的目录。要将一个二进制文件添加到$PATH中,你可以按照以下步骤操作:找到二进制文件的路径:首先,你需要知道二进制文件的确切位置。使用which命令或者find命令来查找文件的位置。例如:whichyou......
  • 爬虫 | xpath + lxml 库 解析爬取网页
    lxml库是用来解析XML和HTML网页内容的Xpath库则是用来查询数据(XPath表达式是一种在XML文档中查找信息的语言,它同样适用于HTML文档)简单示例:#先pipinstalllxmlimportrequestsfromlxmlimportetree#etree主要是用来解析和操作XML/HTML文档#步骤3:获取......
  • 理解dispatch_async
    Submitsablockforasynchronousexecutiononadispatchqueueandreturnsimmediately.提交一个块以在调度队列上异步执行并立即返回。codeshowing以一个最简单的demo开始//创建一个同步队列dispatch_queue_tsyncQueue=dispatch_queue_create("io.sqi.My......
  • A Twisted Path to Renown联机报错/无法联机的解决方法
    成名之路/ATwistedPathtoRenown这款游戏的游戏背景是美国西部,包含了PvE、PvP成分,并且比较有意思的一点是,由于成名之路旨在还原年代感和真实感,所以玩家基本上没有全自动的武器道具或者能连发的,基本就是单发武器,也有弓箭可以选择。这款游戏也是比较像猎杀对决和塔科夫,目前游......
  • 每日一题——Python实现PAT乙级1111 对称日(举一反三+思想解读+逐步优化)七千字好文
    一个认为一切根源都是“自己不够强”的INTJ个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数Python-3.12.0文档解读目录我的写法代码点评时间复杂度分析空间复杂度分析综上所述:优化建议我要更强优化建议完整代码和注释优化分析......
  • pydispatch:Python中的事件驱动编程
    pydispatch是一个轻量级的事件调度器,广泛应用于实现观察者模式。它允许对象之间通过事件进行通信,而无需直接引用彼此,从而实现代码的模块化和可维护性。1.安装pydispatch使用pip安装pydispatch库:pipinstallpydispatch 2.基本概念pydispatch库中有3个核心概念:信号(Sig......
  • 2002NOIP普及组真题 2. 选数
    线上OJ:【02NOIP普及组】选数核心思想:1、使用模板函数isPrime()来判断一个数是否为素数。2、定义一个函数dfs来进行深度优先搜索。在dfs函数中,通过递归的方式遍历所有可能的组合,并计算每个组合的和。在dfs中:如果坐标id超过n,则越界,返回。如果已选了k个数,且......