欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 數獨問題

錢衛國2年前8瀏覽0評論

數獨是一種非常受歡迎的數字邏輯游戲。今天我們來用 Python 解決數獨問題。

首先,我們需要定義數獨的規則。數獨是一個 9x9 的格子,每個格子可以填入 1~9 的數字。我們需要在保持行、列和 3x3 小方塊內的數字都不重復的情況下,填滿整個數獨。

接下來我們來看如何用 Python 解決數獨問題。我們可以采用遞歸算法來實現。在遞歸過程中,我們首先需要找到數獨中最左上角沒有填數字的格子。然后從 1 到 9 的數字中挑選一個數字嘗試填入這個格子中。填入數字后需要檢查當前狀態是否合法,如果合法則繼續遞歸下一步,否則回溯至上一步。

def solveSudoku(board):
"""
:type board: List[List[str]]
:rtype: void Do not return anything, modify board in-place instead.
"""
def isValid(row, col, num):
for i in range(9):
if board[i][col] == num: return False
if board[row][i] == num: return False
if board[3 * (row // 3) + i // 3][3 * (col // 3) + i % 3] == num: return False
return True
def solve():
for i in range(9):
for j in range(9):
if board[i][j] == '.':
for num in '123456789':
if isValid(i, j, num):
board[i][j] = num
if solve(): return True
board[i][j] = '.'
return False
return True
solve()

上面是解決數獨問題的完整代碼。我們定義了一個solveSudoku函數來實現填數獨的功能。在函數中,我們首先定義一個isValid函數用來檢查填入的數字是否合法。接下來我們定義了一個遞歸函數solve,在遞歸過程中按照上述步驟嘗試填數,并判斷填數是否合法。如果成功完成數獨填充,則返回True,如果無法填充則返回False

最后,我們需要將數獨填滿并輸出。你可以在代碼中寫入以下內容:

for row in board:
print(row)

以上代碼可將結果打印出來,便于查看。

好了,以上就是今天為大家帶來的 Python 解決數獨問題的方法,希望對大家有所幫助!