标题:填字游戏求帮忙
只看楼主
学习学徒
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-6-21
结帖率:100%
已结贴  问题点数:20 回复次数:2 
填字游戏求帮忙
题目:现有填字游戏:
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]);
                          
                      }
                 }
                 
             }
         }
         
     }

}
请问哪里错了,为什么运行不了。
搜索更多相关主题的帖子: SEVEN public return false 游戏 
2016-06-21 15:32
grmmylbs
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:54
帖 子:1409
专家分:5845
注 册:2016-2-14
得分:20 
程序代码:
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");
                       }
                  }
                  
              }
          }
          
      }


 }
2016-06-22 09:28
zhangdahui
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-7-13
得分:0 
版主威武
2016-07-13 00:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466206-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.129421 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved