qq_35331560 2016-06-21 07:23 采纳率: 0%
浏览 513

运行结果重复了,哪位大神能解释下?或者提供其他方法

现有填字游戏:
SEVEN

* 7

FORTY9
该式表示一个乘法算式,式中SEVEN是一个5位数,FORTY9是一个6位数,相同的字母代表相同的数字,不同的字母代表不同的数字,并且这些字母表示的数字都不等于9。编程,找出所有可能的解(本题共有3组解)。
import java.util.Scanner;
import java.util.Arrays;

public final class Seven{

private int[] data;

private boolean[] used;

private int[] selected;

private int count;

   public Seven(){   
           data=new int[]{0,1,2,3,4,5,6,7,8,9};   
           used=new boolean[data.length];   
           Arrays.fill(used,false);   
           count=9;   
           selected=new int[count];   
   }   

   private void found(){   
       long top=((long)selected[0])*10000+selected[1]*1000+selected[2]*100+selected[3]*10+7;   
       long bottom=((long)selected[4])*100000+selected[5]*10000+selected[6]*1000+selected[7]*100+selected[8]*10+9; 
       selected[1]=selected[3];
       if(top*7==bottom&&selected[0]!=0&&selected[5]!=0&&selected[0]!=7&&selected[0]!=9&&selected[1]!=7&&selected[1]!=9&&selected[2]!=7&&selected[2]!=9&&selected[4]!=7&&selected[4]!=9&&selected[5]!=7&&selected[5]!=9&&selected[6]!=7&&selected[6]!=9&&selected[7]!=7&&selected[7]!=9&&selected[8]!=7&&selected[8]!=9){   
               System.out.println("   "+top);   
               System.out.println("        7");   
               System.out.println("*-----");   
               System.out.println("   "   +   bottom);  
               System.out.println();   

       }

   }

  public void permute(){ 
   permute(0); 
  }   

   private void permute(int n){   
           if(n<count){   
                   for(int i=0;i<data.length;++i){   
                           if(!used[i]){   
                                   selected[n]=data[i];   
                                   used[i]=true;   
                                   permute(n+1);   
                                   used[i]=false;   
                           }   
                   }   
           }   
           else{   
               found();   
           }   
   }   

   public static void main(String[] args){   
           Seven e=new Seven();   
           e.permute();   
   }   

}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
    • ¥15 C# datagridview 单元格显示进度及值
    • ¥15 thinkphp6配合social login单点登录问题
    • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配