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';
    }
}

C++代码

https://blog.csdn.net/m0_57613893/article/details/120589006

posted @ 2021-11-08 11:56  Infinite_V胜  阅读(52)  评论(0)    收藏  举报