Description
Write a program to solve a Sudoku puzzle by filling the empty cells.
A sudoku solution must satisfy all of the following rules:
- Each of the digits
1-9must occur exactly once in each row. - Each of the digits
1-9must occur exactly once in each column. - Each of the the digits
1-9must occur exactly once in each of the 93x3sub-boxes of the grid.
Empty cells are indicated by the character '.'.
![]()
A sudoku puzzle…
![]()
…and its solution numbers marked in red.
Note:
- The given board contain only digits
1-9and the character'.'. - You may assume that the given Sudoku puzzle will have a single unique solution.
- The given board size is always
9x9.
解法
填表格问题,深度优先搜索。只需要对每一个插入的新元素进行合法性判断即可,因为之前插入的数一定是合法的。注意在搜索失败时需将赋值的点还原为未赋值的状态,相当于回溯。
具体代码如下:
1 | class Solution { |