算法基础-枚举与剪枝_观察算式

观察下面的算式:

△△△ * △△ = △△△△

某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);
}
} 
}
} 
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值