2009-05-31 06:26:19來源不明

程式設計師的面試問題

作法:邏輯的推理來加快速度

/**********************************************************/

#include<stdio.h>  
#include<stdlib.h>  
main()  
{  
 int E,F,O,R,T,Y,N,S,I,X;
 int temp[6]={0};
 for(Y=0;Y<10;Y++)
  for(N=0;N<10;N++)
   {
     if((2*N+Y)%10!=Y||N==Y) continue;
     temp[1]=(2*N+Y)/10;
     for(T=0;T<10;T++)
      {
       if(T==N||T==Y) continue;
        for(E=0;E<10;E++)
         {
           if((temp[1]+2*E+T)%10!=T||E==T||E==N||E==Y) continue;
           temp[2]=(temp[1]+2*E+T)/10;
           for(R=0;R<10;R++)
           {
            if(R==E||R==Y||R==N||R==T) continue;
            for(X=0;X<10;X++)
             {
              if((temp[2]+R+2*T)%10!=X||X==E||X==Y||X==N||X==T||X==R) continue;
              temp[3]=(temp[2]+R+2*T)/10;
              for(O=0;O<10;O++)
               {
                if(O==E||O==Y||O==N||O==T||O==R||O==X) continue;
                 I=(temp[3]+O)%10;
                 if(I==E||I==Y||I==N||I==T||I==R||I==X||I==O) continue;
                 temp[4]=(temp[3]+O)/10;
                 for(F=0;F<10;F++)
                  {
                     if(F==E||F==Y||F==N||F==T||F==R||F==X||F==O||F==I) continue;
                     S=temp[4]+F;
                     if(S==E||S==Y||S==N||S==T||S==R||S==X||S==O||S==I||S==F||S>9) continue;
                     else
                      printf("%d%d%d%d%d + %d%d%d + %d%d%d = %d%d%d%d%d\n",F,O,R,T,Y,T,E,N,T,E,N,S,I,X,T,Y);
                  }
               } 
             }
           } 
         }
      }
   }
  return 0;
}
 

上一篇:自守數

下一篇:多元一次方程式