本題hard難度但是解體思路就是很普通的深搜+回溯
需要考慮的點是遞迴的深搜進行的條件和狀態的記錄
用boolean陣列來記錄每個行、列、九宮格裡1-9的存在情況
先遍歷一次原陣列,記錄空格的位置並對boolean陣列進行初始化
然後對空格位置進行dfs。
class
solution);
}else}}
dfs(board,0)
;}public
void
dfs(
char
board,
int pos)
int[
] space = spaces.
get(pos)
;int i = space[0]
, j = space[1]
;for
(int digit =
0; digit <9&&
!valid;
++digit)}}
}
leetcode 37 解數獨 深搜
編寫乙個程式,通過已填充的空格來解決數獨問題。乙個數獨的解法需遵循如下規則 數字 1 9 在每一行只能出現一次。數字 1 9 在每一列只能出現一次。數字 1 9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。空白格用 表示。public class 37 for int i 0 i 9 i fo...
回溯法解數獨
前天在我的小pad上裝了個數獨遊戲,完了幾把後興趣索然了。不過突然想起來一直想寫個解數獨的程式,不過因為懶和拖拉,就一直沒寫。今天花了30分鐘寫了個解數獨的程式,貼 include include include 某個數字填入後,需要檢查的index void get affected index ...
回溯演算法 解數獨
假設 判斷 假設 class solution def solve self,arr self.helper arr,0 defhelper self,arr,index if index 81 print arr return else if arr index 0 0代表需要填充資料 for i...