观察下面的加法算式:

 

 
+
--------------------------------

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
答案:

 

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <queue>
#include <algorithm>
#define inf 0x3f3f3f3f
using namespace std;
int ans[8];//三羊献瑞祥生辉气
bool vis[10];
void dfs(int k) {
    if(k >= 8) {
        if((ans[0] + ans[4]) * 1000 + (ans[1] + ans[3]) * 100 + (ans[2] + ans[5]) * 10 + (ans[3] + ans[6])
           == ans[0] * 10000 + ans[1] * 1000 + ans[5] * 100 + ans[3] * 10 + ans[7]) {
            printf("%d%d%d%d\n",ans[0],ans[1],ans[2],ans[3]);
           }
           return;
    }
    for(int i = 0;i < 10;i ++) {
        if(k == 0 && i == 0 || vis[i]) continue;
        vis[i] = true;
        ans[k] = i;
        dfs(k + 1);
        vis[i] = false;
    }
}
int main() {
    dfs(0);
}