gpt4 book ai didi

java 数独解算器值不改变

转载 作者:行者123 更新时间:2023-11-30 04:49:31 25 4
gpt4 key购买 nike

我的indexoutofbounds问题已经解决,但我的程序没有编译,但打印出一个未更改的谜题..不知道我哪里出了问题?原始谜题读取 ROM 标准输入在数独谜题的“空”单元格处用 0 代替。我也包含了我的数组列表初始化程序。

public ArrayList<Integer> create(){

ArrayList<Integer> possible = new ArrayList<Integer>();

for(int i=1; i<10; i++){
possible.add(i);
}
return possible;
}
public sudoku( int size )
{
SIZE = size;
N = size*size;

Grid = new int[N][N];
for( int i = 0; i < N; i++ )
for( int j = 0; j < N; j++ )
Grid[i][j] = 0;
}

public void solve()
{
int a, b, c, d, i, j, k, l;

int count = 0;
int value= 0;

for(i=0; i<N;i++){
for(j=0; j<N;j++){
if(Grid[i][j]==0){

ArrayList<Integer> possible = create();

//check row
for(a=0; a<N;a++){
for(b=0; b<N; b++){
if(Grid[a][0]==possible.get(a)){
possible.set(a, 0);
}
}
}
//check column
for(c=0; c<N;c++){
for(d=0; d<N;d++){
if(Grid[0][d]==possible.get(d)){
possible.set(d,0);
}
}
}
for(k=0; k<9; k++){
if(possible.get(k)!=0){
count++;
}
}
if(count==1){
for(l=0; l<9; l++){
if(possible.get(l)!=0){
value=possible.get(l);
}
}
}
Grid[i][j]=value;
}
}
}
}

最佳答案

我看到你的问题,你在嵌套 for 循环中多次使用 i 和 j 变量作为索引:

  for (i = 0; i < N; i++) { // **** you use "i" it here
for (j = 0; j < N; j++) { // **** and "j" here
if (Grid[i][j] == 0) {

ArrayList<Integer> possible = create();

for (i = 0; i < N; i++) { // **** and again here
for (j = 0; j < N; j++) { // **** and again here
if (Grid[i][0] == possible.get(i)) {
possible.set(i, 0);
}
}
}

for (i = 0; i < N; i++) { // **** and again here
for (j = 0; j < N; j++) { // **** and again here
if (Grid[0][j] == possible.get(i)) {
possible.set(i, 0);
}
}
}

// ....

Grid[i][j] = value;
}
}
}

通过在 for 循环中推进索引,您可能会面临超过最大索引的风险,因此当您到达底部时,您的 i 和 j 已一直增加到 9,超过了行的大小和专栏。您几乎不应该从 for 循环内部更改 for 循环索引。您将需要重写此代码。

编辑:它比这更简单:您在 for 循环结束后检查 i,以便 i 是上界的值。运行这个看看我的意思:

  for (i = 0; i < N; i++) {
for (i = 0; i < N; i++) {
System.out.println("C) i = " + i);
}
System.out.println("D) i = " + i);
}

关于java 数独解算器值不改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10159354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com