题目链接
英文链接:https://leetcode.com/problems/sudoku-solver/
中文链接:https://leetcode-cn.com/problems/sudoku-solver/
题目详述
编写一个程序,通过已填充的空格来解决数独问题。
一个数独的解法需遵循如下规则:
- 数字
1-9
在每一行只能出现一次。 - 数字
1-9
在每一列只能出现一次。 - 数字
1-9
在每一个以粗实线分隔的3x3
宫内只能出现一次。
空白格用 '.'
表示。
一个数独。
答案被标成红色。
Note:
- 给定的数独序列只包含数字
1-9
和字符'.'
。 - 你可以假设给定的数独只有唯一解。
- 给定数独永远是
9x9
形式的。
题目详解
DFS,回溯。
- 用三个数组分别记录某行的某位数字是否已经被摆放、某列的某位数字是否已经被摆放、3x3 宫格内的某位数字是否已经被摆放。
- 初始化这三个访问标志。
- 进入下一层前设置访问标志,并改变当前状态。
- 进入下一层。
- 退出下一层后进行恢复。
- 成功的条件是整个棋盘被正确设置,也就是沿着一个一个格子移动后跃出棋盘。
1 | public class LeetCode_00037 { |