PAT乙級Java實現_1018 錘子剪刀布 (20) _附詳細解題註釋_18
阿新 • • 發佈:2019-02-10
1018 錘子剪刀布 (20)(20 分)
大家應該都會玩“錘子剪刀布”的遊戲:兩人同時給出手勢,勝負規則如圖所示:
現給出兩人的交鋒記錄,請統計雙方的勝、平、負次數,並且給出雙方分別出什麼手勢的勝算最大。
輸入格式:
輸入第1行給出正整數N(<=10^5^),即雙方交鋒的次數。隨後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
作者: CHEN, Yue單位: PAT聯盟時間限制: 100ms記憶體限制: 64MB程式碼長度限制: 16KBpackage pat_b; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; //邏輯還是比較簡單的 public class PAT_B_1018 { public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String[] first = in.readLine().split("\\s+"); int n = Integer.valueOf(first[0]);//猜拳的次數 int cntJiaJ = 0, cntJiaC = 0, cntJiaB = 0;//甲出剪刀、錘子、布贏的次數 int cntYiJ = 0, cntYiC = 0, cntYiB = 0;//乙出剪刀、錘子、布贏的次數 for(int i = 0; i < n; i++)//猜拳的次數 { String[] input = in.readLine().split("\\s+"); //通過甲乙的出拳情況判斷誰贏,並更新甲/乙某種出拳贏的次數 if(input[0].charAt(0) == 'J') { if(input[1].charAt(0) == 'J') { } else if(input[1].charAt(0) == 'C') { cntYiC++; } else if(input[1].charAt(0) == 'B') { cntJiaJ++; } } else if(input[0].charAt(0) == 'C') { if(input[1].charAt(0) == 'J') { cntJiaC++; } else if(input[1].charAt(0) == 'C') { } else if(input[1].charAt(0) == 'B') { cntYiB++; } } else if(input[0].charAt(0) == 'B') { if(input[1].charAt(0) == 'J') { cntYiJ++; } else if(input[1].charAt(0) == 'C') { cntJiaB++; } else if(input[1].charAt(0) == 'B') { } } } int cntJia = cntJiaJ+cntJiaC+cntJiaB;//甲贏的次數 int cntYi = cntYiJ+cntYiC+cntYiB;//乙贏的次數 int cntHe = n - cntJia - cntYi;//和局的次數 System.out.println(""+cntJia+" "+cntHe+" "+cntYi); System.out.println(""+cntYi+" "+cntHe+" "+cntJia); printMax(cntJiaJ,cntJiaC,cntJiaB); System.out.print(" "); printMax(cntYiJ,cntYiC,cntYiB); } public static void printMax(int cntJ, int cntC, int cntB)//通過甲/乙三種出拳手勢贏的次數判斷哪種手勢贏的次數最多 { if(cntB >= cntJ && cntB >= cntC) System.out.print("B"); else if(cntC > cntB && cntC >= cntJ) System.out.print("C"); else if(cntJ > cntB && cntJ > cntC) System.out.print("J"); } }