9数算式
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a2465601b58121f77ff13446d4cd800e.png)
评测标准答案:1625
1.首先,对1~9进行全排列,然后对每种排列进行"乘号"位置的排列
2.在对乘号位置确定后,要保证"乘号两边的乘数"正确
3.用乘数的结果,即等号右边的值进行判断 。
check 1. 长度为9 ; check 2. 长度为9时不包含数字0,无重复元素。
4. 最终结果除以2,题目已说明两乘数交换位置 视为一种情况。
import java.util.Set;
import java.util.HashSet;
public class Main002_9数算式{
static int[]a = {1,2,3,4,5,6,7,8,9};
static int count;
public static void main(String[] args) {
per(0);
int ans = count/2;
System.out.println(ans);
}
private static void per(int k) {
if(k==9) {
for(int i=1;i<=8;i++) {
int x1 = algor(0,i);
int x2 = algor(i,9);
if(check(x1*x2))
count++;
}
}
for(int i=k;i<9;i++) {
int t = a[i];
a[i] = a[k];
a[k] = t;
per(k+1);
t = a[i];
a[i] = a[k];
a[k] = t;
}
}
private static boolean check(int x) {
String s=x+"";
if(s.length()!=9 || s.indexOf('0')>-1) return false;
Set<Character> set = new HashSet<>();
for(int i=0;i<s.length();i++)
set.add(s.charAt(i));
return set.size()==9;
}
private static int algor(int i, int j) {
int x = 0;
int p = 1;
for(int k=j-1;k>=i;k--) {
x+=a[k]*p;
p*=10;
}
return x;
}
}