满足等式XXX+XXX=XXX的等式有多少个,X的范围为1到9,
import java.util.*;
public class Main {
static Scanner in = new Scanner(System.in);
static int[] bool= new int[10];
static int[] a= new int[10];
static int sum=0;
static void dfs(int step){
//前面9个盒子已经填满,判断结果的正确性
if(step==9){
if((a[0]*100+a[1]*10+a[2])+(a[3]*100+a[4]*10+a[5])
==(a[6]*100+a[7]*10+a[8])){
sum++;
System.out.println((a[0]*100+a[1]*10+a[2])+"+"+(a[3]*100+a[4]*10+a[5])
+"=="+(a[6]*100+a[7]*10+a[8]));
}
else
return;
}
//每当站在一个盒子面前枚举所有可能,可能是1到9任一个数字
for (int i = 1; i <= 9; i++) {
//每个数字仅且可以使用一次
if(bool[i]==0){
a[step]=i;
bool[i]=1;
dfs(step+1);
bool[i]=0;
}
}
return;
}
public static void main(String[] args) {
Arrays.fill(bool, 0);
dfs(0);
System.out.println(sum/2);
}
}