数独算法java - 这个输出是怎么回事?



>只是想知道为什么下面的代码

public static void generateSudoku(int[][] num) {
    boolean[][][] possibilities = new boolean[9][9][9];
    boolean[] noPossibilities = {false, false, false, false, false, false, false, false, false};
    boolean[] defaultPossibilities = {true, true, true, true, true, true, true, true, true};
    //Get possibilities
    for( int j = 0; j < 9; j++) {
        for( int i = 0; i < 9; i++) {
            if(definite[i][j] == 0) {
                possibilities[i][j] = defaultPossibilities;
                for(int x = 0; x < 9; x++) {
                    if(definite[x][j] != 0) {
                        possibilities[i][j][definite[x][j]-1] = false;
                    }
                }
                for(int y = 0; y < 9; y++) {
                    if(definite[i][y] != 0) {
                        possibilities[i][j][definite[i][y]-1] = false;
                    }
                }
            } else {
                possibilities[i][j] = noPossibilities;
            }
            System.out.println(possibilities[i][j][0] +" "+ possibilities[i][j][1] +" "+ possibilities[i][j][2] +" "+
                    possibilities[i][j][3] +" "+possibilities[i][j][4] +" "+possibilities[i][j][5] +" "+
                    possibilities[i][j][6] +" "+possibilities[i][j][7] +" "+possibilities[i][j][8]);
        }
    }
}

正在返回

false false false false false false false false false
false false true true true true true true true
false false false true true true true true true
false false false false true true true true true
false false false false false true true true true
false false false false false false true true true
false false false false false false false true true
false false false false false false false false true
false false false false false false false false false
false false false false false false false false false
//etc... (all false until end of loop).

它旨在返回对应于相同x或相同y坐标中其他数字的值的值(即检查哪些数字在数独游戏中是不可能的)。布尔值的位置表示哪些数字是可能的 - 所以如果possibilities[i][j][0] == false,在点 [i][j] 中不可能出现值 1,因为在任何其他框中都有一个 1 值,x = i 或 y = j。只是想知道为什么它对 j> 0 的所有值都返回 false。

提前致谢

defaultPossibilites被覆盖。没有意识到将数组的值分配给不同的数组只是有效地重命名数组。感谢扎普尔

最新更新