题目描述
https://leetcode.com/problems/sudoku-solver/description/
图太长了,就不贴了
基本思路
DFS必须得掌握啊
实现代码
class Solution:
def solveSudoku(self, board):
"""
:type board: List[List[str]]
:rtype: void Do not return anything, modify board in-place instead.
"""
def isValid(x,y):
tmp=board[x][y]
board[x][y]='D'
for i in range(9):
if board[i][y]==tmp:
return False
for i in range(9):
if board[x][i]==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) and dfs(board):
return True
board[i][j]='.'
return False
return True
dfs(board)