观察下面的加法算式:
祥 | 瑞 | 生 | 辉 | |
+ | 三 | 羊 | 献 | 瑞 |
-------------------------------- | ||||
三 | 羊 | 生 | 瑞 | 气 |
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
请你填写“三羊献瑞”所代表的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 ",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); }