[TODO]LeetCode 37. Sudoku Solver
2016-11-15 22:47
330 查看
Problem Statement
(Source) Write a program to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by the character
'.'.
You may assume that there will be only one unique solution.
A sudoku puzzle…
…and its solution numbers marked in red.
Tags:
Backtracking,
Hash Table.
Solution
class Solution(object): def solveSudoku(self, board): """ :type board: List[List[str]] :rtype: void Do not return anything, modify board in-place instead. """ self.bt(board, 0, 0) def bt(self, board, i, j): m, n = len(board), len(board[0]) if i == m - 1 and j == n - 1: return True for x in xrange(i, m): for y in xrange(n): if x == i and y < j: continue if board[x][y] == '.': for v in xrange(1, 10): board[x][y] = str(v) if self.check(board, x, y) and self.bt(board, x, y): return True board[x][y] == '.' return False def check(self, board, i, j): """Check whether the newly setted value at (i, j) satisfy all constraints. :type board: List[List[str]] """ m, n = len(board), len(board[0]) for y in xrange(n): if y != j and board[i][y] == board[i][j]: return False for x in xrange(m): if x != i and board[x][j] == board[i][j]: return False a, b = (i // 3) * 3, (j // 3) * 3 for x in xrange(a, a + 3): for y in xrange(b, b + 3): if (x != i or y != j) and board[x][y] == board[i][j]: return False return True
相关文章推荐
- 【LeetCode】37. Sudoku Solver
- LeetCode --- 37. Sudoku Solver
- LeetCode笔记:37. Sudoku Solver
- leetcode 37. Sudoku Solver
- (Java)LeetCode-37. Sudoku Solver
- [leetcode] 37. Sudoku Solver 解题报告
- Leetcode 37. Sudoku Solver
- leetcode 37. Sudoku Solver
- [leetcode]37. Sudoku Solver
- [LeetCode] 37. Sudoku Solver
- LeetCode - 37. Sudoku Solver
- LeetCode 37. Sudoku Solver--回溯法
- leetcode题解-37. Sudoku Solver
- LeetCode 37. Sudoku Solver
- [LeetCode]37. Sudoku Solver
- leetcode-37. Sudoku Solver
- (Leetcode)37. Sudoku Solver
- leetcode 37. Sudoku Solver 一个经典的DFS深度优先搜索的做法
- LEETCODE 37. Sudoku Solver
- LeetCode37. Sudoku Solver