问题描述:
三羊献瑞
观察下面的加法算式:
\
祥 瑞 生 辉
+ 三 羊 献 瑞
-------------------
三 羊 生 瑞 气
\
\
其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
\
请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。
答案:1085
代码解析:
#include <iostream>
using namespace std;
int main()
{
int a,b,c,d,e,f,g,h;//分别代表不同的数字
int x,y,z;//用于判断的
int vis[10]= {0}; //用来标记数字是否使用过
for(a=1; a<10; a++)
{
vis[a]=1;
for(b=0; b<10; b++)
{
if(vis[b]==1)continue;
vis[b]=1;
for(c=0; c<10; c++)
{
if(vis[c]==1)continue;
vis[c]=1;
for(d=0; d<10; d++)
{
if(vis[d]==1)continue;
vis[d]=1;
for(e=1; e<10; e++)
{
if(vis[e]==1)continue;
vis[e]=1;
for(f=0; f<10; f++)
{
if(vis[f]==1)continue;
vis[f]=1;
for(g=0; g<10; g++)
{
if(vis[g]==1)continue;
vis[g]=1;
for(h=0; h<10; h++)
{
if(vis[h]==1) continue;
vis[h]=1;
x=1000*a+100*b+10*c+d;
y=1000*e+100*f+10*g+b;
z=10000*e+1000*f+100*c+10*b+h;
if(x+y==z)cout<<e<<f<<g<<b<<endl;
vis[h]=0;
}
/*
abcd
+ efgb
----------
efcbh
输出efgb
*/
vis[g]=0;
}
vis[f]=0;
}
vis[e]=0;
}
vis[d]=0;
}
vis[c]=0;
}
vis[b]=0;
}
vis[a]=0;
}
return 0;
}
\
\