锤子剪刀布 (20)
时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)
题目描述
大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入描述:
输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。
输出描述:
输出第1、2行分别给出甲、乙的胜、平、负次数,数字间以1个空格分隔。第3行给出两个字母,分别代表甲、乙获胜次数最多的手势,中间有1个空格。如果解不唯一,则输出按字母序最小的解。
输入例子:
10C JJ BC BB BB CC CC BJ BB CJ J
输出例子:
5 3 22 3 5B B 思路分析:1.将输入的交锋信息遍历一遍,求出双方赢、平和负的次数,以及每个手势赢的次数;2.根据这些次数判断双方获胜次数最多的手势并输出。 Java 代码如下:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sca = new Scanner(System.in); int n = sca.nextInt(); String[][] arr = new String[n][2]; int[] left = new int[3]; int[] right = new int[3]; int win = 0; int p = 0; int mistake = 0; for (int i = 0; i < arr.length; i++) { for (int j = 0; j < 2; j++) { arr[i][j] = sca.next(); } } //统计双方赢、平、输的次数 for (int i = 0; i < arr.length; i++) { if(arr[i][0].equals("C")&&arr[i][1].equals("J") || arr[i][0].equals("J")&&arr[i][1].equals("B") || arr[i][0].equals("B")&&arr[i][1].equals("C")){ left = f(left,arr[i][0]); win++; }else if(arr[i][0].equals("C")&&arr[i][1].equals("C") || arr[i][0].equals("J")&&arr[i][1].equals("J") || arr[i][0].equals("B")&&arr[i][1].equals("B")){ p++; }else{ right = f(right,arr[i][1]); mistake++; } } System.out.println(win+" "+p+" "+mistake); System.out.println(mistake+" "+p+" "+win); str(left); System.out.print(" "); str(right); } //判断赢的手势并计数 static int[] f(int[] arr,String str){ if(str.equals("C")) arr[0]++; else if(str.equals("J")) arr[1]++; else if(str.equals("B")) arr[2]++; return arr; } //输出双方赢得最多的手势 static void str(int[] arr){ int max=0; String maxstr = ""; String[] mm = new String[] {"C","J","B"}; for (int i = 0; i < arr.length-1; i++) { for (int j = i+1; j < arr.length; j++) { if(arr[i]<arr[j]){ max = arr[j]; arr[j] = arr[i]; arr[i] = max; maxstr = mm[j]; mm[j] = mm[i]; mm[i] = maxstr; } } } if(arr[0]==arr[1]){ if(arr[1]==arr[2]){ System.out.print("B"); }else{ if(mm[0].compareTo(mm[1])>0){ System.out.print(mm[1]); }else{ System.out.print(mm[0]); } } }else{ if(arr[1]==arr[2]){ System.out.print(mm[0]); }else{ System.out.print(mm[0]); } } } }