免费网站开发平台,做网站还能挣钱,优化网站价格,天津建设工程信息网官网首页题目描述
石头剪刀布游戏有 3 种出拳形状#xff1a;石头、剪刀、布。分别用字母A、B、C表示。
游戏规则#xff1a; 出拳形状之间的胜负规则如下#xff1a; A B#xff1b; B C#xff1b; C A#xff1b; “” 左边一个字母#xff0c;表示相对…题目描述
石头剪刀布游戏有 3 种出拳形状石头、剪刀、布。分别用字母A、B、C表示。
游戏规则 出拳形状之间的胜负规则如下 A B B C C A “” 左边一个字母表示相对优势形状。右边一个字母表示相对劣势形状。 当本场次中有且仅有一种出拳形状优于其他出拳形状则该形状的玩家是胜利者。否则认为是平局。 例如1三个玩家出拳分别是ABC。由于三方优势循环即没有任何一方优于其他出拳者判断为平局。 例如2三个玩家出拳分别是ABB。出拳A的获胜。 例如3三个玩家出拳全部是A。判为平局。 当发生平局没有赢家。有多个胜利者时同为赢家。
输入描述
在一场游戏中每个玩家的信息为一行。玩家数量不超过1000。每个玩家信息有2个字段用空格隔开
玩家ID一个仅由英文字母和数字组成的字符串出拳形状以英文大写字母表示A、B、C形状。~ 拳时间正整数越小表示时间越早~
例如 abc1 A xyz B解释玩家abc1出拳为石头A。玩家xyz出拳为剪刀B
输出描述
输出为赢家的玩家ID列表一个或多个每个ID一行按字符串升序排列。如果没有赢家输出为”NULL“字符串。
例如
abc1用例1
输入 abc1 A xyz B 输出 abc1 说明
A比B有优势abc1胜出用例2
输入 abc1 A xyz A 输出 NULL 说明
没有优胜的出拳形状平局用例3
输入 abc1 A def A alic A xyz B 输出 abc1 alic def 说明 A为优胜方有三个赢家 代码 还在研究…
package odjava;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;public class 石头剪刀布游戏 {// 输入输出处理public static void main(String[] args) {Scanner sc new Scanner(System.in);HashMapCharacter, ArrayListString map new HashMap();while (sc.hasNext()) {String player sc.next();char gesture sc.next().charAt(0);// 如果有人不按套路出则此局作废if (gesture A || gesture C) {System.out.println(NULL);return;}// 统计各个手势的出派人map.putIfAbsent(gesture, new ArrayList());map.get(gesture).add(player);}switch (map.size()) {case 1:case 3:// 只有一种手势或者三种手势都有则平局System.out.println(NULL);break;case 2:ArrayListString ans;if (!map.containsKey(A)) {// 没有A手势只有B、C手势则B赢ans map.get(B);} else if (!map.containsKey(B)) {// 没有B手势只有A、C手势则C赢ans map.get(C);} else {// 没有C手势只有A、B手势则A赢ans map.get(A);}ans.sort(String::compareTo);ans.forEach(System.out::println);break;}}
}