37. Sudoku Solver
生活随笔
收集整理的這篇文章主要介紹了
37. Sudoku Solver
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
編寫一個程序,通過已填充的空格來解決數獨問題。
一個數獨的解法需遵循如下規則:
空白格用?'.'?表示。
一個數獨。
答案被標成紅色。
Note:
- 給定的數獨序列只包含數字?1-9?和字符?'.'?。
- 你可以假設給定的數獨只有唯一解。
- 給定數獨永遠是?9x9?形式的。
DFS
唉,一言難盡。
Code
from typing import Listclass Solution:def solveSudoku(self, board: List[List[str]]) -> None:def dfs(pos: int):nonlocal validif pos == len(spaces):valid = Truereturni, j = spaces[pos]for digit in range(9):if lines[i][digit] == columns[j][digit] == block[i // 3][j // 3][digit] == False:lines[i][digit] = columns[j][digit] = block[i // 3][j // 3][digit] = Trueboard[i][j] = str(digit + 1)dfs(pos + 1)lines[i][digit] = columns[j][digit] = block[i // 3][j // 3][digit] = Falseif valid:return lines = [[False] * 9 for _ in range(9)]columns = [[False] * 9 for _ in range(9)]block = [[[False] * 9 for _ in range(3)] for _ in range(3)]valid, spaces = False, list()for i in range(9):for j in range(9):if board[i][j] == '.':spaces.append((i, j))else:digit = int(board[i][j]) - 1lines[i][digit] = columns[j][digit] = block[i // 3][j // 3][digit] = Truedfs(0)總結
以上是生活随笔為你收集整理的37. Sudoku Solver的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020\Simulation_1\7.
- 下一篇: 树莓派没有声音