前段時間碰巧寫了乙個,直接拿來用了=,=
解題思路參考: 【雜記】數獨求解
因為要適配本題的格式,稍微做了修改
class solution:
# 判斷是否是有效的數獨
def is_valid(self, row, column, rect_num):
rect_num = row // 3 * 3 + column // 3
if self.shudu_array[row][column] == '.':
return false
curr_num = self.shudu_array[row][column]
if curr_num in self.rec['row'][row]:
return false
elif curr_num in self.rec['column'][column]:
return false
elif curr_num in self.rec['rect'][rect_num]:
return false
return true
# 主流程函式
def get_res(self):
row, column = self.get_zero_pos()
# 如果找不到需要填寫數字的位置,則已求得解,遞迴結束
if row >= 9 or column >= 9:
return true
# 小方格的編號
rect_num = row // 3 * 3 + column // 3
for val in range(1, 10):
val = str(val)
self.shudu_array[row][column] = str(val)
# 判斷填入數字後,是否是有效的數獨
if not self.is_valid(row, column, rect_num):
self.shudu_array[row][column] = '.'
continue
# 更新記錄表的行、列和小方格資料
# 判斷是否填入成功
if self.get_res():
return true
self.shudu_array[row][column] = '.'
self.rec['row'][row].pop()
self.rec['column'][column].pop()
self.rec['rect'][rect_num].pop()
return false
# 獲取下個需要填寫數字的行列下標
def get_zero_pos(self):
for row in range(0, 9):
for column in range(0, 9):
if '.' == self.shudu_array[row][column]:
return row, column
return row + 1, column + 1
def solvesudoku(self, board: list[list[str]]) -> none:
"""do not return anything, modify board in-place instead.
""" # 要解的原始數獨
self.shudu_array = board
# 用於記錄當前每行、每列、每個小方格已填入的陣列,用於判斷是否是有效的數獨
self.rec = ,\
'column' : ,\
'rect' : }
# 根據原始數獨陣列,初始化記錄表
for row in range(0, 9):
for column in range(0, 9):
rect_num = row // 3 * 3 + column // 3
if self.shudu_array[row][column] == '.':
continue
curr_num = self.shudu_array[row][column]
self.get_res()
board = self.shudu_array
Latex困難解決集合
在寫 報告的過程中,面對latex的漂亮格式無法抵抗,常常把檔案整理成latex格式。但是在寫作的過程中,會遇到很多word中很容易解決,但是latex中卻不知道如何實現的小功能,這裡一一記下來。verb命令的使用 在文中需要引用 即verbatim格式 注意不是花括號 integration by...
克服困難,解決遇到的問題!!
遇到了一些問題,一度產生放棄的想法,不過好歹最後還是一路堅持了下來,將問題解決了大半 反觀以前做圓角邊框的時候,要用程式解大量的曲線方程,算得我真是想吐,也是想放棄,不過還是挺到最後把這塊骨頭啃了下來 這次做的是乙個將所有形狀放縮成同一高度的功能,遇到的一些困難,都是因為粗心大意所致,不過也是有一些...
leetcode系列 演算法 中等 合併區間
按照第乙個數字進行排序 排序後,新增變數new list儲存遍歷結果,初始值為排序後的第一對數字 遍歷從index 1開始,每次遍歷乙個新數字對,只需要判斷第乙個數字,是否在new list最後乙個數字對中間 如果在,則合併兩對數字 如果不在,插入新數字對 class solution def me...