题目等式还原
    ABCDE
      DFG
+     DFG
-----------
    XYZDE
每个字母代表一个数字(0-9)
用什么样的算法求啊 
我本来是用循环感觉太麻烦拉,请问大家应该是什么样的思路啊
谢谢

解决方案 »

  1.   

    比如
        ABCDE     
          DFG
    +     DFG
    -----------
        XYZDE这个式子的ABCDEFGXYZ都是0-9的其中一个数字,求出ABCDEFGXYZ各是多少这个式子就刚好成立
    例子A+B=C 那么A=1,B=2,C=3这就是成立的,上面这个只不过复杂一点。
      

  2.   

    需要观察
    从出现最多的字母开始循环    ABCDE     
          DFG
    +     DFG
    -----------
        XYZDED出现了4次,F E G 等出现了2次,可以先从这里入手这样算法的复杂度会小很多
      

  3.   

    是用9个循环吗?
    我这样写的
    long[] aa=new long [10];
    long a,b,c,d,e,f,g,x,y,z;
    System.Boolean w=true;

    for(d=1;d<=9;d++)
    for(f=0;f<=6;f++)
    {
    if((f*2)%10==0)
    {
    for(g=0;g<=6;g++)
    {
    if((2*g)%10==0)
    {
    for(e=0;e<=9;e++)
    for(a=1;a<9;a++)
    for(x=1;x<=9;x++)
    {
    if(x==a+1)
    {
    for(y=0;y<=1;y++)
    {
    if(y==1||y==0)
    {
                      
    for(b=0;b<=9;b++)
    for(c=0;c<=9;c++)


    for(z=0;z<=9;z++)
    {
    w=true;
    aa[0]=a;aa[1]=b;aa[2]=c;aa[3]=d;aa[4]=e;
    aa[5]=f;aa[6]=g;aa[7]=x;aa[8]=y;aa[9]=z;
    for(int m=0;m<10;m++)
    for(int n=0;n<10;n++)
    {
    if(aa[m]==aa[n]&&m!=n)
    w=false;
    }/////////////检查数字是否相同
    if((a*10000+b*1000+c*100+d*10+e+d*100+f*10+g+d*100+f*10+g)==(x*10000+y*1000+z*100+d*10+e)&&w==true)
    { System.out.Println(" "+a+b+c+d+e+"\r\n   "+d+f+g+"\r\n"+"  +"+d+f+g+"\r\n"+"------"+"\r\n "+x+y+z+d+e);

    }
    else
    continue;
    }
    }
    else
    continue;
    }
                                    
    }
    else
    continue;
    }
                            
    }
    else
    continue;
    }
    }
    else
    continue;
    }