Java题解—1018 锤子剪刀布 (20 分)
原题
https://pintia.cn/problem-sets/994805260223102976/problems/994805304020025344
Java代码
超时版
import java.util.Scanner;
/*
C 代表“锤子”、J 代表“剪刀”、B 代表“布”
*/
//c>j j>b b>c
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
//六个变量存储甲乙胜局类型
int AC=0,AJ=0,AB=0,BC=0,BJ=0,BB=0;
//平局
int draw=0;
for(int i=0;i<N;i++){
String participant1 = scanner.next();
String participant2 = scanner.next();
//甲胜
if (participant1.equals("C") && participant2.equals("J"))
AC++;
else if (participant1.equals("J") && participant2.equals("B"))
AJ++;
else if (participant1.equals("B") && participant2.equals("C"))
AB++;
//乙胜
else if(participant2.equals("C") && participant1.equals("J"))
BC++;
else if (participant2.equals("J") && participant1.equals("B"))
BJ++;
else if (participant2.equals("B") && participant1.equals("C"))
BB++;
//平
if (participant1.equals(participant2)) {
draw++;
}
}
System.out.println(AC+AJ+AB+" "+draw+" "+(N-(AC+AJ+AB+draw)));
System.out.println(BC+BJ+BB+" "+draw+" "+(N-(BC+BJ+BB+draw)));
System.out.print(max(AC,AJ,AB)+" "+max(BC,BJ,BB));
}
//获胜次数最多的手势(总共16种情况,但按字母序最小输出可以把情况归类更小)
public static char max(int C,int J,int B){
if (B>=C&&J<=B) return 'B';//注意这里B=C=J的情况
if (C>B&&J<=C) return 'C';
return 'J';
}
}