题目
思路:
求有多少种解法 比如:6+8/3+952/714就是一种解法,5+3/1+972/486 是另一种解法
8/3+952/714是可以除尽的 但是后面一个不行 所以我们也要通分
代码:
public class 凑算式 {
static int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
static int cnt = 0;//记录解法
// 判断 式子是否成立
private static boolean check() {
//A=a0 B=a1 c = a2 DEF=X GHI=Y
// 分母=a2*y 分子=a1*y+a2*x
//通分:((a1*y+a2*x/a1*y==0)&&a0+a1/b2)==10
int x = a[3] * 100 + a[4] * 10 + a[5];
int y = a[6] * 100 + a[7] * 10 + a[8];
if ((a[1] * y + a[2] * x) %( a[2] * y) == 0 && a[0] + (a[1] * y + a[2] * x) / (a[2] *y) == 10) {
return true;
}
return false;
}
static void f(int step) {
// step=9说明已经排完了
if (step == 9) {
if (check()) {
cnt++;
}
}
// 填数 找不同的数的排列的模板写法
for (int i = step; i < 9; i++) {
int t = a[i];
a[i] = a[step];
a[step] = t;
// 填完一个数之后递归填下一个
f(step+1);
// 回溯
t = a[i];
a[i] = a[step];
a[step] = t;
}
}
public static void main(String[] args) {
f(0);
System.out.println(cnt);
}
}