下图中,每个方块代表 1…13 中的某一个数字,但不重复。
例如:
1×2+9×7=13×5
10×8+12×3=11×4---这里发现+,-都不影响答案;
只要有任意一个方块代表的数字不同,就算两种不同的方案。
例如:
1×2+9×7=13×5
10×8+12×3=11×4---这里发现+,-都不影响答案;
只要有任意一个方块代表的数字不同,就算两种不同的方案。
请你计算,一共有多少种不同的方案。
public class 补全等式 {
private static int count;
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[] = new int[12];
boolean visit[] = new boolean[14];
dfs(a,visit,0);
System.out.println(count);//122368
}
private static void dfs(int[] a, boolean[] visit, int num) {
// TODO Auto-generated method stub
if (num == 12) {
if (judge(a)) {
count++;
}
return;
}
for (a[num] = 1; a[num] < 14; a[num]++) {
if ((num==5)&&(a[0]*a[1]+a[2]*a[3])!=a[4]*a[5]) {
continue;
}
if (visit[a[num]]==false) {
visit[a[num]]=true;
num++;
dfs(a, visit, num);
num--;
visit[a[num]]=false;
}
}
}
private static boolean judge(int[] a) {
// TODO Auto-generated method stub
if ((a[6]*a[7]+a[8]*a[9])==a[10]*a[11]) {
if ((a[0]*a[1]+a[2]*a[3])==a[4]*a[5]) {
return true;
}
}
return false;
}
}