必须返回真值,拿到唯一解,否则会被撤销选择,

    1. class Solution:
    2. def solveSudoku(self, board: List[List[str]]) -> None:
    3. """
    4. Do not return anything, modify board in-place instead.
    5. """
    6. def isvaild(i,j,num):
    7. for x in range(0,9):
    8. if board[i][x]==str(num):return False
    9. if board[x][j]==str(num):return False
    10. if board[(i//3)*3+x//3][(j//3)*3+x%3]==str(num): return False
    11. return True
    12. def backtrack(i,j):
    13. if i==9:return #True
    14. if j==9:
    15. return backtrack(i+1,0)
    16. if board[i][j]!='.': backtrack(i,j+1)
    17. if board[i][j]=='.':
    18. for num in range(1,10):
    19. if isvaild(i,j,num):
    20. board[i][j]=str(num)
    21. backtrack(i,j+1)#:return True
    22. print(num)
    23. board[i][j]='.'
    24. #return False
    25. backtrack(0,0)