检查数独中的每个随机数(Java)

我有以下代码,它通过检查数独中的每个随机数是否没有重复来解决数独问题,但它不起作用,我认为它进入了无限循环,因为它没有任何结果显示,如果我的方法完全错误,请告诉我正确的做法并帮我编辑代码。

 package essai;import java.util.Random;public class Essai_checker {    static final boolean valide=true;    static final boolean non_valide=false;    //检查数字在行、列或子网格中是否没有重复 static boolean checkInt(int a[][],int test,int c_i,int c_j){        if(test==0) return non_valide;        //检查行        for(int i=0;i<9;i++){            if(test==a[c_i][i]) return non_valide;        }        //检查列        for(int i=0;i<9;i++){            if(test==a[i][c_j]) return non_valide;        }        //检查子网格        int ii=c_i/3;        int jj=c_j/3;        // 这些测试用于确定哪个子网格包含该数字         if(ii<3) c_i=0;         else             if(ii>1 && ii<2) c_i=3;                 else if(ii>2 && ii<=3) c_i=6;        if(jj<3) c_j=0;        else             if(jj>1 && jj<2) c_j=3;                 else if(jj>2 && jj<=3) c_j=6;        for(int i=c_i;i<c_i+3;i++){            for(int j=c_j;j<c_j+3;j++){                if(test==a[c_i][c_j]) return non_valide;            }        }            return valide;        }    public static void main(String[] args) {        int [][] soduko2={                {0,0,0,0,0,0,0,0,0},                {0,0,0,0,0,0,0,0,0},                {0,0,0,0,0,0,0,0,0},                {0,0,0,0,0,0,0,0,0},                {0,0,0,0,0,0,0,0,0},                {0,0,0,0,0,0,0,0,0},                {0,0,0,0,0,0,0,0,0},                {0,0,0,0,0,0,0,0,0},                {0,0,0,0,0,0,0,0,0}            };        Random r=new Random();        for(int i=0;i<9;i++){            for(int j=0;j<9;j++){                int entier=r.nextInt(9)+1;                boolean init =checkInt(soduko2,entier,i,j);                while(init ==non_valide){                    entier=r.nextInt(9);                    init =checkInt(soduko2,entier,i,j);                }                if(init=true)                    soduko2[i][j]=entier;            }            }        for(int i=0;i<9;i++){            for(int j=0;j<9;j++){                System.out.println(soduko2[i][j]+",");            }        }        System.out.println("完成!");    }}

回答:

首先,条件 (ii>1 && ii<2) 总是为假,不知道这是否会成为问题

其次,条件 (ii>2 && ii<=3) 只有在 ii==3 时才为真

这可能是问题的一部分

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注