观察下面的算式:
△△△ * △△ = △△△△
某3位数乘以2位数,结果为4位数
要求:在9个△所代表的数字中,1~9的数字恰好每个出现1次。
算法思想:先遍历所有的三位数和二位数,检查它们的积是不是四位数,再依次取得每位的数字,判断重复与否,最后判断是不是有0。
import java.util.ArrayList;
import java.util.List;
public class Horse {
public static void main(String[] args){
List<Integer> list = new ArrayList<Integer>();
for(int i=100;i<1000;i++){
for(int j=10;j<100;j++){
int z=i*j;
if(z>=1000 && z<10000){
list.clear();//每一轮开始清空list,只保存本轮数据
Integer one = new Integer(i/100);//one指从左到右第一位上的数字
if(list.contains(one)){//list中已经有这个数,不符合条件,继续下一次循环
continue;
}else{//list中没有这个数,加入以便后续判断
list.add(one);
}
Integer two = new Integer((i/10)%10);
if(list.contains(two)){
continue;
}else{
list.add(two);
}
Integer three =new Integer(i%10);
f(list.contains(three)){
continue;
}else{
list.add(three);
}
Integer four = new Integer(j/10);
if(list.contains(four)){
continue;
}else{
list.add(four);
}
Integer five = new Integer(j%10);
if(list.contains(five)){
ontinue;
}else{
list.add(five);
}
Integer six = new Integer(z/1000);
if(list.contains(six)){
continue;
}else{
list.add(six);
}
Integer seven = new Integer((z/100)%10);
if(list.contains(seven)){
continue;
}else{
list.add(seven);
}
Integer eight = new Integer((z/10)%10);
if(list.contains(eight)){
continue;
}else{
ist.add(eight);
}
Integer nine = new Integer(z%10);
if(list.contains(nine)){
continue;
}else{
list.add(nine);
}
if(!list.contains(new Integer(0))){//不重复且不包括0,符合条件的输出
System.out.println(i+"*"+j+"="+z);
}
}
}
}
}
}