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
代碼長度限制: 16KB
package 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");
}
}