三羊献瑞
观察下面的加法算式:
祥 | 瑞 | 生 | 辉 | |
+ | 三 | 羊 | 献 | 瑞 |
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ||||
三 | 羊 | 生 | 瑞 | 气 |
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
答案:(9分)
f1:暴力枚举
f2:深搜
package PAT7;
public class Main {
private static int[] visited = new int[10];
private static int[] a = new int[10];
private static int ans = 0;
public static void dfs(int step) {
if (step > 7) {
if (((a[0] * 1000 + a[1] * 100 + a[2] * 10 + a[3])
+ (a[4] * 1000 + a[5] * 100 + a[6] * 10 + a[1]) == (a[4]
* 10000 + a[5] * 1000 + a[2] * 100 + a[1] * 10 + a[7]))&&a[0]!=0&&a[4]!=0) {
System.out.println(a[4] + "" + a[5] + "" + a[6] + "" + a[1]);
ans++;
}
return;
}
for (int i = 0; i <= 9; i++) {
if (visited[i] == 0) {
visited[i] = 1;
a[step] = i;
dfs(step + 1);
visited[i] = 0;
}
}
}
public static void main(String[] args) {
dfs(0);
System.out.println(ans);