将数独问题缩小到一格子,判断这个格子填数字是否合法如果合法就填进去,并求解下一个格子的情况
private static void solve(int row, int col) {
if (row == 9) {
i++;
System.out.println("===========" + i + "==========");
printBoard();
//System.exit(0);
} else {
if (board[row][col] == 0) {
//需要填数字1~9
for (int num = 1; num <= 9; num++) {
if (!isExist(row, col, num)) {
board[row][col] = num; //8
//解决下一个格子
solve(row + (col + 1) / 9, (col + 1) % 9);
}
//如果此处没解 必须清零
board[row][col] = 0;
}
} else {
//已经存在一个已知数字 直接跳过去解决下一个格子
solve(row + (col + 1) / 9, (col + 1) % 9);
}
}
}
当下一个格子没有解的时候,当前解决这个格子方法弹出栈,退到上一个格子,并置0,继续解决
判断当前格子填数字是否合法


1568

被折叠的 条评论
为什么被折叠?



