转载

第七届蓝桥杯Java A——寒假作业

现在小学的数学题目也不是那么好玩的。

看看这个寒假作业:

□ + □ = □

□ - □ = □

□ × □ = □

□ ÷ □ = □

每个方块代表1~13中的某一个数字,但不能重复。

比如:

6 + 7 = 13

9 - 8 = 1

3 * 4 = 12

10 / 2 = 5

以及:

7 + 6 = 13

9 - 8 = 1

3 * 4 = 12

10 / 2 = 5

就算两种解法。(加法,乘法交换律后算不同的方案)

你一共找到了多少种方案?

public class Main {

    static int[] book = new int[13];
    static int[] arr = new int[13];
    static long ans;

    public static void main(String[] args) {
        dfs(0);
        System.out.println(ans);
    }

    static void dfs(int idx) {
        if (idx == 12) {
            if (arr[9] == arr[10] * arr[11])
                ans++;
        } else if (idx == 3) {
            if (arr[0] + arr[1] != arr[2])
                return;
        } else if (idx == 6) {
            if (arr[3] - arr[4] != arr[5])
                return;
        } else if (idx == 9) {
            if (arr[6] * arr[7] != arr[8])
                return;
        }
        for (int i = 1; i <= 13; i++) {
            if (book[i - 1] == 0) {
                book[i - 1] = 1;
                arr[idx] = i;
                dfs(idx + 1);
                book[i - 1] = 0;
            }
        }
    }
}
原文  https://www.wmathor.com/index.php/archives/1264/
正文到此结束
Loading...