第六届蓝桥杯 JavaB 三羊献瑞
三羊献瑞
观察下面的加法算式:
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
思路:祥 瑞 生 辉三 羊 献气dfs分别取1~9
答案:1085
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
/**
*
* @description TODO
* @author frontier
* @time 2019年3月12日 上午11:20:25
* 祥 瑞 生 辉三 羊 献气 1085
* 9 5 6 7 1 0 8 2
*/
public class 结果填空3三羊献瑞 {
static int n;
static int[] a=new int[10];
static boolean[] vis=new boolean[10];
static boolean flag;
static int num1,num2,num3;
public static void main(String[] args) throws FileNotFoundException {
long time = System.currentTimeMillis();
Scanner in = new Scanner(new File("src/JavaB/s7/8.txt"));
dfs(0);
System.out.println(9567+1085==10652);
System.out.println((System.currentTimeMillis() - time) + "ms");
}
static boolean check() {
num1=a[1]*1000+a[2]*100+a[3]*10+a[4];
num2=a[5]*1000+a[6]*100+a[7]*10+a[2];
num3=a[5]*10000+a[6]*1000+a[3]*100+a[2]*10+a[8];
if(num1+num2==num3)
return true;
return false;
}
static void dfs(int n) {
//if(flag){
//return;
//}
if(n==8) {
if(check()) {
flag=true;
for(int i=1;i<=8;++i) {
System.out.print(a[i]+" ");
}
System.out.println();
}
return;
}
for(int i=0;i<=9;++i) {
if(!vis[i]) {
vis[i]=true;
a[n+1]=i;
dfs(n+1);
vis[i]=false;
}
}
}
}