这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
public class Main { static boolean[] book = new boolean[9]; static int[] arr = new int[9]; static int ans; public static void main(String[] args) { dfs(0); System.out.println(ans); } static void dfs(int idx) { if (idx == 9) { if (check()) ans++; } else { for (int i = 1; i <= 9; i++) { if (!book[i - 1]) { book[i - 1] = true; arr[idx] = i; dfs(idx + 1); book[i - 1] = false; } } } } static boolean check() { int a = arr[0]; int b = arr[1]; int c = arr[2]; int def = arr[3] * 100 + arr[4] * 10 + arr[5]; int ghi = arr[6] * 100 + arr[7] * 10 + arr[8]; return a * c * ghi + b * ghi + def * c == 10 * c * ghi; } }