PAT——1018. 锤子剪刀布
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
![](http://nos.patest.cn/7r_muvaqb4myb9.jpg)
现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。
输入格式:
输入第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
1 package com.hone.basical; 2 3 import java.util.Scanner; 4 5 /** 6 * 原题目:https://www.patest.cn/contests/pat-b-practise/1016 7 * @author Xia 8 * 思路:直接模拟出所有的情况即可。 9 */ 10 public class basicalLevel1018GameOfStone{ 11 static int y1 = 0; //代表和的次数 12 13 static int js1 = 0; 14 static int cs1 = 0; 15 static int bs1 = 0; 16 17 static int js2 = 0; 18 static int cs2 = 0; 19 static int bs2 = 0; 20 public static void main(String[] args){ 21 Scanner s = new Scanner(System.in); 22 int n = s.nextInt(); 23 for (int i = 0; i < n; i++) { 24 char one = s.next().charAt(0); 25 char two = s.next().charAt(0); 26 compare(one,two); 27 } 28 System.out.println((bs1+js1+cs1) +" "+y1+" "+(bs2+js2+cs2)); 29 System.out.println((bs2+js2+cs2) +" "+y1+" "+(bs1+js1+cs1)); 30 31 if (bs1>=cs1&&bs1>=js1) { 32 System.out.print("B "); 33 }else if (cs1>=js1) { 34 System.out.print("C "); 35 }else { 36 System.out.print("J "); 37 } 38 39 if (bs2>=cs2&&bs2>=js2) { 40 System.out.println("B"); 41 }else if (cs2>=js2) { 42 System.out.println("C"); 43 }else { 44 System.out.println("J"); 45 } 46 } 47 48 public static void compare(char one,char two){ 49 if((one=='J'&&two=='B')){ 50 js1++; 51 }else if((one=='B'&&two=='C')){ 52 bs1++; 53 }else if((one=='C'&&two=='J')){ 54 cs1++; 55 }else if((one=='C'&&two=='B')){ 56 bs2++; 57 }else if((one=='B'&&two=='J')){ 58 js2++; 59 }else if((one=='J'&&two=='C')){ 60 cs2++; 61 }else { 62 y1++; 63 } 64 } 65 66 }