第七屆藍橋杯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; } } } }