第七届蓝桥杯 JavaB 凑算式
凑算式
这个算式中AI代表19的数字,不同的字母代表不同的数字。
比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。
这个算式一共有多少种解法?
注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。
答案: 29
法一: 思路:
给9个字母编号,dfs,检查合法则count++。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
/**
*
* @description TODO
* @author frontier
* @time 2019年3月11日 下午5:45:20
*
*/
public class 结果填空3凑算式 {
static int n;
static boolean[] vis = new boolean[10];
static double[] a = new double[10];
static int count;
static double temp;
static int num;
public static void main(String[] args) throws FileNotFoundException {
Scanner in = new Scanner(new File("src/JavaB/s7/3.txt"));
dfs(0);
System.out.println(count);
}
static void dfs(int n) {
if (n == 9) {
temp = a[1] + a[2] / a[3] + (a[4] * 100 + a[5] * 10 + a[6]) / (a[7] * 100 + a[8] * 10 + a[9]);
if (Math.abs(temp - 10) < 1e-9)
count++;
return;
}
for (int i = 1; i <= 9; ++i) {
if (!vis[i]) {
vis[i] = true;
a[n + 1] = i;
dfs(n + 1);
vis[i] = false;
}
}
}
}