【题目】:
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.
【参考资料】:视频讲解
【Python代码】:
class Solution(object):
def solveSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: void Do not return anything, modify board in-place instead.
"""
if not board:
return;
self.solve(board)
def solve(self, board):
for i in range(len(board)):
for j in range(len(board[0])):
if board[i][j] == '.':
for c in range(ord('1'), ord('9')+1):
if self.isvalid(board, i , j , chr(c)):
board[i][j] = chr(c)
if self.solve(board):
return True
else:
board[i][j] = '.'
return False
return True
def isvalid(self, board, row, col, c):
for i in range(9):
if board[i][col] != '.' and board[i][col] == c:
return False
if board[row][i] != '.' and board[row][i] == c:
return False
if board[3 * (row // 3) + i // 3][3 * (col // 3) + i % 3] != '.' and board[3 * (row // 3) + i // 3][3 * (col // 3) + i % 3] == c:
return False
return True