只是想知道为什么以下代码
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,因为在x = i的任何其他框中都有1值或y = j。
只是想知道为什么它为j> 1的所有值返回false。 0
提前致谢
答案 0 :(得分:0)
defaultPossibilites
被覆盖了。没有意识到有效地将数组的值分配给不同的数组只是重命名数组。感谢zapl