用java虚拟机实现数独计算的功能,求解决代码成几何倍数增加的问题!

我是新手自学的java,我尝试着写一个数独计算器,比如用户输入3,那么输出一个只包含数组1-3的3x3的数字矩阵,且每一行每一列的数字均不重复,如果是4的话那么输出一个只... 我是新手自学的java,我尝试着写一个数独计算器,比如用户输入3,那么输出一个只包含数组1-3的3x3的数字矩阵,且每一行每一列的数字均不重复,如果是4的话那么输出一个只包含1-4的4x4的数字矩阵,我首先声明了一个二维数组,但是代码越来越多了以后我发现,越往后面写,代码就是几何倍数的增加,另外,输入3的时候,计算需要2秒左右,4大概12秒左右,但是输入5的时候。。。我等了10分钟也没有输出。。。 求解决代码增加的问题,另外再解决一下计算速度慢的问题,我是用的随机数来实现的数字的填写! 谢谢!我不想将答案写进数组然后循环输出,我想让电脑进行计算。。。。 展开
 我来答
伙哥_王爷
2017-03-05 · 超过57用户采纳过TA的回答
知道小有建树答主
回答量:73
采纳率:0%
帮助的人:47.5万
展开全部
package know;
public class T11 {
 public static void main(String[] args) {
  int[][] shudu=shudu(4);
  for(int i=0;i<shudu.length;i++){
   for(int j=0;j<shudu[i].length;j++){
    System.out.print(shudu[i][j]+" ");
   }
   System.out.println();
  }
 }
 /**
  * 排列规则(9)
  *  123456789
  234567891
  345678912
  456789123
  567891234
  678912345
  789123456
  891234567
  912345678
  * @param i
  */
 public static int[][] shudu(int i){
  /**
   * 构造数组
   */
  int[][] shudu=new int[i][];
  for(int k=0;k<i;k++){
   shudu[k]=new int[i];
  }
  /**
   * 填充数字
   */
  for(int k=0;k<i;k++){
   int first=k+1;
   for(int j=0;j<i;j++){
    shudu[k][j]=first++;
    if(shudu[k][j]>i){
     first=1;
     shudu[k][j]=first++;
    }
   }
  }
  return shudu;
 }
}

设计这种程序,第一是要想清楚设计思路,确定思路之后,发现逻辑很有规律,只是多次重复这个规律,对于这种情况,一般要想到的就是用for循环或递归这两种解决方法

追问
哥们你这不对啊。。。只是每一列和每一排的数字不等于了,但是各个对角呢。。。。全都一样啊。。。
追答

传代码超出长度限制了,只能传文件,测试部分数字会报错,比如6,初步判断是不存在满足这些数字的数独,对于6乘6的数独,在网上找了几个,也是只能满足横竖,无法满足对角线

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式