「ハンマーはさみ」ゲーム:
次に、両者の対立の記録を示し、双方の勝ち、引き分け、敗北の数を数え、双方のジェスチャーで勝つ可能性を最大限に高めてください。
入力の説明:
最初の行を入力して、正の整数N(<= 105)、つまり、両側が戦った回数を指定します。次のN行では、各行は対立に関する情報、つまり、両方の当事者によって同時に与えられたジェスチャーを示します。Cは「ハンマー」、Jは「はさみ」、Bは「
布」、最初の文字はパーティーA、2番目の文字はパーティーBを表し、間にスペースがあります。
出力の説明:出力の
1行目と2行目は、それぞれAとBの勝ち、引き分け、負けの数を示しています。数字はスペースで区切られています。3行目は、AとBの勝ち数が最も多いジェスチャを、間にスペースを入れて表す2文字を示しています。解が一意でない場合は、アルファベット順に最小の解が出力されます。
この質問では、2次元配列と2番目の配列を使用して、結果の記録を支援できます。答え
は次のとおりです。
//package winCount;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String num= sc.nextLine();
int n=Integer.parseInt(num);
char[] ch=new char[]{
'B','C','J'};
int[] count=new int[3];//分别表示a胜,a平,a败
int[][] arr=new int[3][2];
for (int i = 0; i < n; i++) {
char c1=sc.next().charAt(0);
char c2=sc.next().charAt(0);
int index1=0;int index2=0;
for(int j=0;j<ch.length;j++){
if(c1==ch[j]){
index1=j;
}if(c2==ch[j]){
index2=j;
}
}
switch (index1-index2){
case 2:
case -1://a胜
count[0]++;arr[index1][0]++;break;
case 0:count[1]++;break;
case -2:
case 1://b胜
count[2]++;arr[index2][1]++;break;
}
}
System.out.println(count[0]+" "+count[1]+" "+count[2]);
System.out.println(count[2]+" "+count[1]+" "+count[0]);
for(int j=0;j<2;j++){
int max=arr[0][j];
int key=0;
for(int k=0;k<3;k++){
if(arr[k][j]>max){
max=arr[k][j];
key=k;
}
}
System.out.print(ch[key]);
if(j==0){
System.out.print(" ");
}
}
}
}