蓝桥杯_练一练「42 点问题」java (枚举)

题目描述
众所周知在扑克牌中,有一个老掉牙的游戏叫做 24 点:选取 4 张牌进行加减乘除,看是否能得出 24 这个答案。

现在小蓝同学发明了一个新游戏,他从扑克牌中依次抽出 66 张牌(注意不是一次抽出),进行计算,看是否能够组成 42 点 , 满足输出 YES,反之输出 NO。

最先抽出来的牌作为第一个操作数,再抽出牌做第二个操作数,运算结果再当作第一个操作数,继续进行操作。除不尽的情况保留整数。

请你设计一个程序对该问题进行解答。

输入描述
输出仅一行包含 66个字符。
在这里插入图片描述
输出描述
若给出到字符能够组成 42 点 , 满足输出 YES,反之输出 NO。

输入输出样例
示例
输入

K A Q 6 2 3

输出

YES

蓝桥杯_练一练「42 点问题」java (枚举)_第1张图片

分析

  1. 输入字符可以参考:Java中如何输入一个字符
  2. 参考:java如何创建一个元素类型是ArrayList的数组
  3. 此题创建了一个数据类型为ArrayList的数组ans,用来存储每一轮的四则运算所有可能出现的运算结果;需要注意在使用时,要进行内存的创建,例如使用数组的第一个值,就先需要先进行内存的创建ans[1] = new ArrayList<>();
  4. 使用两层循环,第一层循环用来取数a[i],第二层循环让前一个容器中所有数和当前新抽出来的数a[i]进行四则运算,放入当前的第i个容器ans[i];
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        ArrayList<Integer>[] ans = new ArrayList[10];//存储每一轮的所有可能出现的运算结果
        char[] c = new char[10];
        int[] a = new int[10];
        for (int i = 1; i <= 6; i++) {
            c[i] = scan.next().charAt(0);
            if (c[i] == 'K')
                a[i] = 13;
            else if (c[i] == 'Q')
                a[i] = 12;
            else if (c[i] == 'J')
                a[i] = 11;
            else if (c[i] == 'A')
                a[i] = 1;
            else
                a[i] = c[i] - '0';
        }
        ans[1] = new ArrayList<>();//需要创建内存
        ans[1].add(a[1]);//第一个数放在第一个容器ans[1]里
        for (int i = 2; i <= 6; i++) {//从第二个数开始,作为新抽出来的数
            ans[i] = new ArrayList<>();
            for (int j = 0; j < ans[i - 1].size(); j++) {//让前一个容器中所有数和当前新抽出来的数a[i]进行四则运算,放入当前的第i个容器ans[i]
                ans[i].add(ans[i - 1].get(j) + a[i]);
                ans[i].add(ans[i - 1].get(j) - a[i]);
                ans[i].add(ans[i - 1].get(j) * a[i]);
                ans[i].add(ans[i - 1].get(j) / a[i]);
            }
        }
        //遍历第六个容器,也就是进行五次操作后的最终容器
        for (int i = 0; i < ans[6].size(); i++) {
            if (ans[6].get(i) == 42) {
                System.out.println("YES");
                return;
            }
        }
        System.out.println("NO");
        scan.close();
    }
}

你可能感兴趣的:(蓝桥杯,java,蓝桥杯)