题目
思路:
求有多少种解法 比如: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)==10int 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);}
}