Java 理解这个数独解算器的部分
我对下面的代码片段有一个问题。这是我在youtube上找到的数独解算器。它使用递归回溯算法来解决。我只是想从中吸取教训,但我在某些方面遇到了困难。 下面的代码段是一个布尔值,用于检查3x3框中是否有数字,这将在以后的solve方法中使用Java 理解这个数独解算器的部分,java,recursion,solver,sudoku,Java,Recursion,Solver,Sudoku,我对下面的代码片段有一个问题。这是我在youtube上找到的数独解算器。它使用递归回溯算法来解决。我只是想从中吸取教训,但我在某些方面遇到了困难。 下面的代码段是一个布尔值,用于检查3x3框中是否有数字,这将在以后的solve方法中使用 // we check if a possible number is in its 3x3 box private boolean isInBox(int row, int col, int number) { int r = row - row %
// we check if a possible number is in its 3x3 box
private boolean isInBox(int row, int col, int number) {
int r = row - row % 3;
int c = col - col % 3;
for (int i = r; i < r + 3; i++)
for (int j = c; j < c + 3; j++)
if (board[i][j] == number)
return true;
return false;
}
我只是不明白这是怎么回事。第%3行做什么?然后在for循环中,i0 -> 0
1 -> 0
2 -> 0
3 -> 3
4 -> 3
5 -> 3
6 -> 6
7 -> 6
8 -> 6
然后,循环检查从r、c到r+2、c+2(含)的每个位置,查找指定的值编号。如果插入args行和列的一些示例输入,前两行做什么?在3x3范围内尝试值1到3,然后在3x3范围外尝试值>3,您注意到了什么?