凑算式
问题描述:
B DEF
A + --- + ------- = 10
C GHI
(如果显示有问题,可以参见【图1.jpg】)
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
题目分析:
使用全排列
代码展示:
import java.util.ArrayList;
public class Main {
static ArrayList<Integer> l = new ArrayList<Integer>();
static boolean[] b = new boolean[10];
static int sum = 0;
// B DEF
// A + --- + ------- = 10
// C GHI
static void f( int count) {//
if (count == 9) {
if (l.get(0) * l.get(2) * (l.get(6) * 100 + l.get(7) * 10 + l.get(8))
+ l.get(1) * (l.get(6) * 100 + l.get(7) * 10 + l.get(8))
+ ((l.get(3) * 100 + l.get(4) * 10 + l.get(5)) * l.get(2)) == 10 * l.get(2)
* (l.get(6) * 100 + l.get(7) * 10 + l.get(8))) {
System.out.println(l);
sum++;
}
} else {
for (int i = 1; i < 10; i++) {
if (!b[i]) {
l.add(i);
b[i] = true;
f( count + 1);
l.remove(l.size() - 1);
b[i] = false;
}
}
}
}
public static void main(String[] args) {
f( 0);
System.out.println(sum);
}
}