这道题可以用 dfs(我不会),我用的暴力枚举,直接10个for
也可以用三个,从题目给出来的数据开始,
因为填空题只要在你的电脑上跑出来,再提交答案就好了
package com.company;
import java.util.*;
public class Main {
public static void main(String[] args) {
// write your code here
for(int i = 1;i<10;i++){
for(int j = 0;j<10;j++){
for(int k = 0;k<10;k++){
for(int l = 0;l<10;l++){
//([][][][]-xxxx)*xx=900前面部分处理完成
for(int i1=1;i1<10;i1++){
for(int j1=0;j1<10;j1++){
for(int k1=0;k1<10;k1++){
for(int l1=0;l1<10;l1++){
//([][][][]-[][][][])*xx=900第二部分处理完成
for(int a = 1;a<10;a++){
for(int b =0;b<10;b++){
//第三部分处理完成
//创建一个set存放这十个数字,如果有重复的,就结束当前循环
//(因为set如果添加的时候发现set里面有重复元素,就会返回false)
Set<Integer> set = new HashSet<>();
if(set.add(i)&&set.add(j)&&set.add(k)&&set.add(i1)&&set.add(j1)&&set.add(k1)&&set.add(a)&&set.add(b)&&set.add(l)&&set.add(l1)){
int num1 = i*1000+j*100+k*10+l;
int num2 = i1*1000+j1*100+k1*10+l1;
int num3 = a*10+b;
if((num1-num2)*num3==900){
System.out.println("("+i+j+k+l+"-"+i1+j1+k1+l1+")"+"*"+a+b+"=900");
}
}else{
continue;
}
}
}
}
}
}
}
}
}
}
}
}
}
会得到两个结果。
答案是: