题目描述:
看这个算式:
☆☆☆ + ☆☆☆ = ☆☆☆
如果每个五角星代表 1 ~ 9 的不同的数字。
这个算式有多少种可能的正确填写方法?
173 + 286 = 459
295 + 173 = 468
173 + 295 = 468
183 + 492 = 675
以上都是正确的填写法!
注意:
111 + 222 = 333 是错误的填写法!
因为每个数字必须是不同的!
也就是说:1~9中的所有数字,每个必须出现且仅出现一次!
注意:
不包括数字“0”!
注意:
满足加法交换率的式子算两种不同的答案。
所以答案肯定是个偶数!
分析:先生成1-9组成的不同的9位数,然后三个三个的相加,如果a+b=c就输出结果。
主要用递归,出口是1-9个不同的数生成完毕。
import java.util.ArrayList;
import java.util.List; public class test_1 {
public static List<String> num = new ArrayList<String>();
public static int count =0;
public void randomNum(int mark){
if(mark == 9){
String[] result = (String[])num.toArray(new String[10]);
String a = "";
String b = "";
String c = "";
for(int i=0;i<3;i++)
a+=result[i];
for(int i=3;i<6;i++)
b+=result[i];
for(int i=6;i<9;i++)
c+=result[i];
if(Integer.parseInt(a)+Integer.parseInt(b)==Integer.parseInt(c))
//System.out.println(a+" + "+b+" = "+c);
count++;
return ;
}else{
for(int i=1;i<=9;i++){
if(!num.contains(""+i)){
num.add(""+i);
randomNum(++mark);
}else{
continue;
}
mark--;
num.remove(mark);
}
} } public static void main(String args[]){
new test_1().randomNum(0);
System.out.println(count);
}
}