注册 登录
编程论坛 JAVA论坛

填字游戏求帮忙

学习学徒 发布于 2016-06-21 15:32, 3503 次点击
题目:现有填字游戏:
SEVEN
*         7      
----------
FORTY9
该式表示一个乘法算式,式中SEVEN是一个5位数,FORTY9是一个6位数,相同的字母代表相同的数字,不同的字母代表不同的数字,并且这些字母表示的数字都不等于9。编程,找出所有可能的解(本题共有3组解)。

代码:

public class Crossword {
     public Crossword(){}
     public boolean n1(int a[]){
         int i=0,j;
         while(a[4]!=7)
             return false;
         while(a[1]!=a[3])
             return false;
         while(i==0){
             for(j=i+1;j<=4;j++){
                 if(a[0]==a[j])
                     return false;
             }
         }
         while(i==2){
             for(j=i+1;j<=4;j++){
                 if(a[2]==a[j])
                     return false;
             }
         }
         return true;
     }
     public boolean n2(int a[],int b[]){
            int i,j;
            for(i=0;i<=4;i++)
              for(j=0;j<=5;j++)
                if(a[i]==b[j])
                  return false;
            if(b[5]!=9)
                return false;
            return true;
          }

    public static void main(String[] args){
         Crossword c=new Crossword();
         int m,n;
         int i,j;
         int a[]=new int[5];
         int b[]=new int[6];
         for(i=14287;i<86567;i++){
             m=i;
             for(j=4;j>=0;j--){
                 a[j]=m%10;
                 m=m/10;
             }
             if(c.n1(a)){
                 n=m*7;
                 if(n<876549){
                     for(j=5;j>=0;j--){
                         b[j]=n%10;
                         n=n/10;
                     }
                      if(c.n2(a,b)){
                           System.out.printf("  %d%d%d%d%d",a[0],a[1],a[2],a[3],a[4]);
                           System.out.println("\n  *7");
                           System.out.println("-------");
                           System.out.println("  "+ b[0]+b[1]+b[2]+b[3]+b[4]+b[5]);
                          
                      }
                 }
                 
             }
         }
         
     }

}
请问哪里错了,为什么运行不了。
2 回复
#2
grmmylbs2016-06-22 09:28
程序代码:

public class Crossword {
      public Crossword (){}
      public boolean n1(int a[])
      {
          int i=0,j;
          if(a[4]!=7)
              return false;
          if(a[1]!=a[3])
              return false;
          //while(i==0)
          {
              for(j=1;j<=4;j++)
              {
                  if(a[0]==a[j])
                      return false;
              }
          }
          //while(i==2)
          {
              for(j=3;j<=4;j++)
              {
                  if(a[2]==a[j])
                      return false;
              }
          }
          if(a[3]==a[4])
              return false;
          return true;
      }
      public boolean n2(int a[],int b[])
      {
             int i,j;
             if(b[5]!=9)
                 return false;
             for(i=0;i<=4;i++)
             {
                 for(j=i+1;j<=5;j++)
                 {
                     if(b[i]==b[j])
                         return false;
                 }
             }
            
             for(i=0;i<=4;i++)
             {
                 if(b[i]==9)
                     return false;
               for(j=0;j<=5;j++)
                 if(a[i]==b[j])
                   return false;
             }
            
             return true;
       }

     public static void main(String[] args)
     {
          test1 c=new test1();
          int m,n;
          int i,j;
          int a[]=new int[5];
          int b[]=new int[6];
          for(i=14287;i<86567;i++)
          {
              m=i;
              for(j=4;j>=0;j--)
              {
                  a[j]=m%10;
                  m=m/10;
              }
              if(c.n1(a))
              {
                  n=i*7;
                  if(n<876549)
                  {
                      for(j=5;j>=0;j--)
                      {
                          b[j]=n%10;
                          n=n/10;
                      }
                       if(c.n2(a,b))
                       {
                            System.out.printf("  %d%d%d%d%d",a[0],a[1],a[2],a[3],a[4]);
                            System.out.println("\n  *   7");
                            System.out.println(" --------");
                            System.out.println("  "+ b[0]+b[1]+b[2]+b[3]+b[4]+b[5]);
                            System.out.println("\n");
                       }
                  }
                  
              }
          }
         
      }


 }
#3
zhangdahui2016-07-13 00:03
版主威武
1