【PAT】1018 錘子剪刀布 (20 分)
阿新 • • 發佈:2019-01-06
1018 錘子剪刀布 (20 分)
大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,勝負規則如圖所示:
現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式:
輸入第 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
import java.util.Scanner; public class Main{ public static int Judge(String A,String B){ if(A.charAt(0) == B.charAt(0)) return 0; switch(A.charAt(0) - B.charAt(0)){ case 1: return 2; case -1: return 1; case 7: return 2; case -7: return 1; case 8: return 1; case -8: return 2; } return 1; } public static void main(String [] args){ Scanner cin = new Scanner(System.in); int N; String A,B; N = cin.nextInt(); int [] resA = new int[3]; int [] resB = new int[3]; int [] winGestureCntA = new int[3]; int [] winGestureCntB = new int[3]; int tmp; int maxA = 0,maxB = 0; int indexA = 0,indexB = 0; for(int i = 0;i < N;i ++){ A = cin.next(); B = cin.next(); tmp = Judge(A,B); resA[tmp] ++; if(tmp == 1){ switch(A.charAt(0)){ case 'B': winGestureCntA[0] ++; break; case 'C': winGestureCntA[1] ++; break; case 'J': winGestureCntA[2] ++; break; } } else if(tmp == 2){ switch(B.charAt(0)){ case 'B': winGestureCntB[0] ++; break; case 'C': winGestureCntB[1] ++; break; case 'J': winGestureCntB[2] ++; break; } } } resB[0] = resA[0]; resB[1] = resA[2]; resB[2] = resA[1]; for(int i = 0;i < 3;i ++){ if(winGestureCntB[i] > maxB){ maxB = winGestureCntB[i]; indexB = i; } if(winGestureCntA[i] > maxA){ maxA = winGestureCntA[i]; indexA = i; } } System.out.println(resA[1] + " " + resA[0] + " " + resA[2]); System.out.println(resB[1] + " " + resB[0] + " " + resB[2]); switch(indexA){ case 0: System.out.print("B "); break; case 1: System.out.print("C "); break; case 2: System.out.print("J "); break; } switch(indexB){ case 0: System.out.print("B"); break; case 1: System.out.print("C"); break; case 2: System.out.print("J"); break; } } }