AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P2831. 石头剪刀布游戏

简单通过率 45% · 提交 1,014 · 通过 461
哈希表模拟字符串

小慕正在设计一个石头剪刀布游戏的判定模块。游戏中有 3 种出拳形状:石头、剪刀、布,分别用字母 A、B、C 表示。 游戏规则如下: 1. 出拳形状之间的胜负规则为:A > B;B > C;C > A。其中“>”左边表示相对优势的形状,右边表示相对劣势的形状。 2. 当本场次中有且仅有一种出拳形状优于其他所有出拳形状时,该形状的玩家获胜;否则判定为平局。 3. 如果发生平局,则没有赢家;如果有多个玩家同时满足获胜条件,则他们都算作赢家。 例如 1:三个玩家出拳分别是 A、B、C,由于出现(即没有任何一种形状优于其他所有形状),判定为平局。 例如 2:三个玩家中,出拳分别是 A、B,出拳 A 的玩家获胜。 例如 3:三个玩家全部出拳 A,判定为平局。

提示:带虚线的词点一下有通俗解释。

输入描述

<p> 在一场游戏中,每个玩家的信息为一行。玩家数量不超过 1000 。 </p> <p> 每个玩家信息有 2 个字段,用空格隔开: </p> <p> 1. 玩家 ID:一个仅由英文字母和数字组成的字符串 </p> <p> 2. 出拳形状:以英文大写字母表示, A 、B 、C 形状。 </p> <p> 例: </p> <p> abc1 A </p> <p> xyz B </p> <p> 解释: </p> <p> 玩家 abc1 出拳为石头( A )。玩家 xyz 出拳为剪刀( B ) </p>

输出描述

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

示例

示例 1

输入

abc1 A
def A
alic A
xyz B

输出

abc1
alic
def

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

示例 2

输入

abc1 A
xyz B

输出

abc1

说明:A 比 B 有优势,abc1 胜出

示例 3

输入

abc1 A
xyz A

输出

NULL

说明:没有优胜的出拳形状,平局

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
石头剪刀布胜负关系 石头(A) 剪刀(B) 布(C) A 胜 B B 胜 C C 胜 A 箭头方向表示“胜”,形成循环则平局
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「石头剪刀布游戏」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。