15-三羊献瑞(暴力)

154 阅读1分钟

问题描述:

三羊献瑞

观察下面的加法算式:
\

     祥  瑞 生 辉

 +  三  羊 献 瑞

-------------------
三 羊 生 瑞 气
\

\

其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。
\

请你填写“三羊献瑞”所代表的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;
}

\

\