-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path37_SudokuSolver.py
More file actions
30 lines (30 loc) · 1.08 KB
/
37_SudokuSolver.py
File metadata and controls
30 lines (30 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution(object):
def solveSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: void Do not return anything, modify board in-place instead.
"""
def isvalid(x, y, board):
tmp = board[x][y]
board[x][y] = 'X'
for i in range(9):
if board[i][y] == tmp: return False
for j in range(9):
if board[x][j] == tmp: return False
for i in range(3):
for j in range(3):
if board[(x/3)*3+i][(y/3)*3+j] == tmp: return False
board[x][y] = tmp
return True
def dfs(board):
for i in range(9):
for j in range(9):
if board[i][j]=='.':
for k in '123456789':
board[i][j]=k
if isvalid(i,j, board) and dfs(board):
return True
board[i][j]='.'
return False
return True
dfs(board)