华为OD机试 - 石头剪刀布游戏(Java 2024 D卷 200分)

在这里插入图片描述

华为OD机试 2024D卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(D卷+C卷+A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

石头剪刀布游戏有 3 种出拳形状:石头、剪刀、布。分别用字母 A , B , C 表示。

游戏规则:

  1. 出拳形状之间的胜负规则如下: A > B;B > C;C > A;">"左边一个字母,表示相对优势形状。右边一个字母,表示相对劣势形状。
  2. 当本场次中有且仅有一种出拳形状优于其它出拳形状,则该形状的玩家是胜利者。否则认为是平局。
  3. 当发生平局,没有赢家。有多个胜利者时,同为赢家。

例如 1: 三个玩家出拳分别是A, B, C ,由于出现三方优势循环(即没有任何一方优于其它出拳者),判断为平局。

例如 2: 三个玩家,出拳分别是 A, B ,出拳 A 的获胜。

例如 3: 三个玩家,出拳全部是 A ,判为平局。

二、输入描述

在一场游戏中,每个玩家的信息为一行。玩家数量不超过 1000 。每个玩家信息有 2 个字段,用空格隔开:

  1. 玩家 ID:一个仅由英文字母和数字组成的字符串
  2. 出拳形状:以英文大写字母表示, A 、B 、C 形状。

例如:

abc1 A
xyz B

解释:玩家 abc1 出拳为石头( A )。玩家 xyz 出拳为剪刀( B )

三、输出描述

输出为赢家的玩家 ID 列表(一个或多个),每个 ID 一行,按字符串升序排列。如果没有赢家,输出为"NULL"字符串。

例如:abc1

1、输入

abc1 A
xyz B

2、输出

abc1

3、说明

A 比 B 有优势,abc1 胜出

四、解题思路

要判断石头剪刀布游戏的赢家,首先需要理解游戏的规则。根据描述,玩家出拳有三种形状,分别用字母 A(石头)、B(剪刀)、C(布)表示。游戏规则是:

  • A > B(石头胜剪刀)
  • B > C(剪刀胜布)
  • C > A(布胜石头)

如果某种形状相对于其他形状有唯一的胜利者,则该形状的玩家获胜;否则为平局。

解决步骤

  1. 读取输入:
    • 读取每个玩家的信息,包括玩家ID和出拳形状。
  2. 统计出拳形状:
    • 统计每种出拳形状的玩家数量及其玩家ID。
  3. 判断胜利者:
    • 根据出拳形状数量判断是否存在唯一的胜者。
    • 如果某种出拳形状有唯一的胜利者,记录其玩家ID;如果没有唯一的胜利者,则为平局。
  4. 输出结果:
    • 如果存在赢家,按字符串升序输出玩家ID;如果没有赢家,输出 “NULL”。

五、Java算法源码

public class Test01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 存储玩家信息的列表,每个元素是一个包含玩家ID和出拳形状的数组List<String[]> players = new ArrayList<>();// 读取输入的每行数据,直到没有更多输入while (scanner.hasNextLine()) {String line = scanner.nextLine();if (line.isEmpty()) break; // 结束输入时跳出循环players.add(line.split(" ")); // 将玩家ID和出拳形状添加到列表}scanner.close(); // 关闭扫描器// 输出赢家的玩家ID列表,或者输出"NULL"System.out.println(findWinners(players));}public static String findWinners(List<String[]> players) {// 创建一个映射,用于存储每种出拳形状对应的玩家ID列表Map<Character, List<String>> shapeMap = new HashMap<>();shapeMap.put('A', new ArrayList<>());shapeMap.put('B', new ArrayList<>());shapeMap.put('C', new ArrayList<>());// 遍历所有玩家,统计每种出拳形状的玩家for (String[] player : players) {String playerId = player[0]; // 玩家IDchar shape = player[1].charAt(0); // 出拳形状shapeMap.get(shape).add(playerId); // 将玩家ID添加到对应出拳形状的列表中}List<String> winners = new ArrayList<>(); // 用于存储赢家的玩家ID// 判断哪种出拳形状获胜if (shapeMap.get('A').size() > 0 && shapeMap.get('B').size() > 0 && shapeMap.get('C').size() == 0) {winners.addAll(shapeMap.get('A')); // A > B,且没有C,则A获胜} else if (shapeMap.get('B').size() > 0 && shapeMap.get('C').size() > 0 && shapeMap.get('A').size() == 0) {winners.addAll(shapeMap.get('B')); // B > C,且没有A,则B获胜} else if (shapeMap.get('C').size() > 0 && shapeMap.get('A').size() > 0 && shapeMap.get('B').size() == 0) {winners.addAll(shapeMap.get('C')); // C > A,且没有B,则C获胜}// 如果没有赢家,返回"NULL"if (winners.isEmpty()) {return "NULL";}// 按字典顺序排序赢家的玩家ID,并返回结果Collections.sort(winners);StringBuilder result = new StringBuilder();for (String winner : winners) {result.append(winner).append("\n"); // 将每个赢家的ID添加到结果中,每个ID占一行}return result.toString().trim(); // 去掉末尾多余的换行符}
}

六、效果展示

1、输入

abc1 A
def A
alic A
xyz B

2、输出

abc1
alic
def

3、说明

A 为优胜方,有三个赢家。

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(D卷+C卷+A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

酷开科技丨酷开系统大屏购物 打造沉浸式购物体验

在这个信息化的时代&#xff0c;购物已经不仅仅局限于传统的线下店铺&#xff0c;线上购物逐渐成为了我们生活中重要的一部分。而大屏购物作为线上购物的一种形式&#xff0c;更是凭借其独特的优势和实用的技巧&#xff0c;成为了消费者们的新宠。随着科技的进步和消费者需求的…

lumbda常用操作

文章目录 lumbda的常用操作将List<String>转List<Integer>filter 过滤max 和min将List<Object>转为Map将List<Object>转为Map&#xff08;重复key&#xff09;将List<Object>转为Map&#xff08;指定Map类型&#xff09; lumbda的常用操作 将Li…

读AI新生:破解人机共存密码笔记13有益机器

1. 标准模型 1.1. 我们能控制一个从外太空来的超级智能实体的概率几乎为零 1.2. 随着根据标准模型设计的机器变得更加智能&#xff0c;以及它们的行动范围遍及全球&#xff0c;关闭机器这种方法越来越不可行 1.2.1. 机器将会追求它们自己的目标&#xff0c;无论目标错得多么…

《大道平渊》· 拾伍 —— 为什么做生意的人都欲望比较充足?

《大道平渊》 拾伍 " 欲壑难填&#xff0c;勇往直前。" 为什么做生意的人都欲望比较充足&#xff1f;因为没有人给他们发工资。 在自由市场上&#xff0c;对手渠道、组织运行效率、商业化…… 随时一波小浪&#xff0c;都能把你干下场。 . 我们毕竟不是真正的 食…

eNSP中DHCP的相关命令和配置

一、拓扑图 1.新建拓扑图 2.设置PC端 双击PC1&#xff0c;在基础配置下&#xff0c;将IPv4配置选择”DHCP“&#xff0c;点击“应用”。 PC2、PC3、PC4同样操作。 二、DHCP配置 1.g0/0/0口的配置 在AR1上的命令配置如下&#xff1a; <Huawei>system-view [Huawei]…

.NET 一款支持8种方式维持权限的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

CloudFlare Tunnel实现内网穿透

CloudFlare Tunnel 背景&#xff1a; 家中设备处于内网NAT环境&#xff0c;希望使用CF tunnel构建内网穿透的环境。 有了CF tunnel后&#xff0c;可实现&#xff1a; 家中的NAS可以直接SSH AWS的云服务可迁到到NAS NAT主机借助CF tunnel部署服务 步骤&#xff1a; clou…

数据结构——跳表Skip List

本文对跳表的定义、实现、应用等进行简单总结。 一、 介绍 1.定义 跳表&#xff08;Skip List&#xff09;&#xff1a;是一种概率性数据结构&#xff0c;由William Pugh在1990年提出&#xff0c;主要用于在有序的元素集合上进行快速的搜索、插入和删除操作。跳表的效率与平衡…

英语智汇学习系统

目 录 1 软件概述 1.1 项目研究背景及意义 2 系统相关技术 2.1 HTML、WXSS、JAVASCRIPT技术 2.2 Vanilla框架 2.3 uni-app框架 2.4 MYSQL数据库 3 需求分析 3.1 可行性分析 3.2 功能需求分析 3.3 系统用户及用例分析 3.4 非功能需求分析 3.5 数据流图…

windows USB 设备驱动开发-总章

通用串行总线 (USB) 提供可扩展的即插即用串行接口&#xff0c;确保外围设备的标准、低成本的连接。 USB 设备包括键盘、鼠标、游戏杆、打印机、扫描仪、存储设备、调制解调器、视频会议摄像头等。USB-IF 是一个特别兴趣组 (SIG)&#xff0c;负责维护官方 USB 规范、测试规范和…

如何提高项目风险的处理效率?5个重点

提高项目风险的处理效率&#xff0c;有助于迅速识别和应对风险&#xff0c;减少风险导致的延误&#xff0c;降低成本&#xff0c;提升项目质量&#xff0c;确保项目按时交付。如果项目风险处理效率较低&#xff0c;未能及时发现和处理风险&#xff0c;导致问题累积&#xff0c;…

小米汽车SU7全色系H5自适应展示源码

为了满足广大车迷和潜在消费者对小米汽车SU7全色系的视觉体验需求&#xff0c;我们特别推出了一款基于HTML的自适应H5源码&#xff0c;用于在线展示小米汽车SU7的全色系。这款源码不仅兼容各种设备和屏幕尺寸&#xff0c;而且能够完美地呈现出小米汽车SU7的优雅外观和精致细节。…

【qt】CAD下

目录 一.前言二.缩放1.逻辑2.获取图形项选中的个数3.获取图形项并放大4.视图缩放5.完整代码6.效果展示7.缩小完整代码 三.旋转1.图形项进行旋转2.视图的旋转3.完整代码4.效果展示5.右转代码 四.恢复1.图形项复原2.视图复原3.完整代码4.效果展示 五.前后置1.设置z轴的值2.后置代…

Linux 扩容 根分区

CentOS7&#xff0c;LVM根分区扩容步骤&#xff1a; LVM扩容思维流程&#xff1a;创建一个物理分区–>将这个物理分区转换为物理卷–>把这个物理卷添加到要扩展的卷组中–>然后才能用extend命令扩展此卷组中的逻辑卷 1.查看现有分区大小 df -TH 2.关机增加大小为40G(…

appinventor2中求某个值在列表中的索引用什么方法?

使用“求对象在列表中的位置”方法就可以了&#xff1a; 返回指定对象在列表中的位置&#xff0c;从 1 开始&#xff0c;如果不在列表中&#xff0c;则返回 0。 相应地&#xff0c;知道了索引&#xff0c;从列表中取值得方法是&#xff1a;选择列表中索引值对应的列表项 返回…

linux下安装kkFileView4

kkFileView为文件文档在线预览解决方案&#xff0c;该项目使用流行的spring boot搭建&#xff0c;易上手和部署&#xff0c;基本支持主流办公文档的在线预览&#xff0c;如doc,docx,xls,xlsx,ppt,pptx,pdf,txt,zip,rar,图片,视频,音频等等 安装kkFileView前需要安装LibreOffic…

昇思MindSpore学习总结二——张量

1、张量 张量tensor表示的是一个多维的矩阵&#xff0c;比如零维就是一个点&#xff0c;一维就是向量&#xff0c;二维就是一般的矩阵&#xff0c;多维就相当于一个多维的数组&#xff0c;这和numpy是对应的&#xff0c;而且PyTorch的Tensor和numpy的ndarray可以相互转换&#…

Python | Leetcode Python题解之第200题岛屿数量

题目&#xff1a; 题解&#xff1a; class Solution:def dfs(self, grid, r, c):grid[r][c] 0nr, nc len(grid), len(grid[0])for x, y in [(r - 1, c), (r 1, c), (r, c - 1), (r, c 1)]:if 0 < x < nr and 0 < y < nc and grid[x][y] "1":self.d…

【论文速读】|MEDFUZZ:探索大语言模型在医学问题回答中的鲁棒性

本次分享论文&#xff1a;MEDFUZZ: EXPLORING THE ROBUSTNESS OF LARGE LANGUAGE MODELS IN MEDICAL QUESTION ANSWERING 基本信息 原文作者&#xff1a;Robert Osazuwa Ness, Katie Matton, Hayden Helm, Sheng Zhang, Junaid Bajwa, Carey E. Priebe, Eric Horvitz 作者单…

Lua博客网站支持搜索、评论、登录注册

该简易博客示例用于学习网站的基础知识与MySQL数据库。 简述&#xff1a;开源Lua网站开发服务(FastWeb)支持&#xff1a;注册、登录、文章分页、评论分页、简易权限管理和搜索功能。发帖功能支持Markdown(支持记忆功能)图示&#xff1a;