凑算式
这个算式中A~I 都代表是 [1,9]的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
1,解决这个问题用暴力枚举的方法,每一次确定一个值的时候都判断是否与前面出现的数字重复。
2,注意的小点就是要给数字乘一个1.0,是数字变为浮点型,防止存在遗漏的数据,尽可能使分子乘以1.0。
public class Formula {
// B DEF
//A + --- + ------- = 10
// C GHI
//
public static void main(String[] args) {
int count = 0;
for (int A = 1; A < 10; A++) {
for (int B = 1; B < 10 ; B++) {
if (A != B) {
for (int C = 1; C < 10; C++) {
if (A != C && B != C) {
for (int D = 1; D < 10; D++) {
if (D != A && D != B && D != C) {
for (int E = 1; E < 10; E++) {
if (E != A && E != B && E != C && E != D) {
for (int F = 1; F < 10; F++) {
if (F != A && F != B && F != C && F != D && F != E) {
for (int G = 1; G < 10; G++) {
if (G != A && G != B && G != C && G != D && G != E && G != F) {
for (int H = 1; H < 10; H++) {
if (H != A && H != B && H != C && H != D && H != E && H != F
&& H != G ) {
for (int I = 1; I < 10; I++) {
if ( I != A && I != B && I != C && I != D && I != E && I != F
&& I != G && I != H&&A + B * 1.0 / C + (D*100 + E *10 + F )* 1.0/(G *100 + H * 10+ I ) == 10.0) {
count++;
System.out.print("第"+count+"种:"+A +" " + B +" "+C+" "+ D+" "+E+" "+F+" "+G+" "+H+" "+I);
System.out.println();
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
System.out.println("总共"+count+"种方法");
}
}