看到解數獨就想到了n皇后問題,關鍵點是如何將題目中的合法條件轉換為**
題目:36. 有效的數獨鏈結
思路
首先我先考慮的是如何,如何滿足題目中的三個條件。剛開始想到用unordered_map後來發現其實可以用陣列來存;
數字 1-9 在每一行只能出現一次。
數字 1-9 在每一列只能出現一次。
數字 1-9 在每乙個以粗實線分隔的 3x3 宮內只能出現一次。
1.「行」:重複判斷:raw[0]代表第0行的一類的數 raw[0][1] 代表著第0行值為1的數是否已經存在
vector
bool
>>
raw(
9,vector<
bool
>(10
,false))
;
2.同理「列」重複判斷
vector
bool
>>
batch(9
,vector<
bool
>(10
,false))
;
3."塊」重複判斷:這個比較難理解了。就是每batch(對應的是9題目中的九個塊中的乙個塊),batch代表著第0塊值為1的數是否已經存在
vector
bool
>>
batch(9
,vector<
bool
>(10
,false))
;
**:
class
solution
}return
true;}
};
思路:**:
class
solution
bool
dfs(vector
char
>>
&board, vector
bool
>>
&used,
int start_i,
int start_j)
if(start_i >= board.
size()
)if(used[start_i]
[start_j]
==false)}
}else
return
false;}
public
:void
solvesudoku
(vector
char
>>
& board)
}int start_i =0;
int start_j =0;
dfs(board, used, start_i, start_j);}
};
389 判斷數獨是否合法
5.5 很神奇的使用了map陣列,感覺自己的路子簡直是有點兒野。map陣列的定義方式為 hashmap map2 new hashmap 2 9 for int i 0 i 2 i 判斷數獨是不是合法,要判斷同一行,同一列,以及同乙個九宮之內是不是有相同的數。雖然ac了,但是提示我的編譯是有錯誤的。...
LintCode 判斷數獨合法
請判定乙個數獨是否有效。該數獨可能只填充了部分數字,其中缺少的數字用 表示。注意事項 乙個合法的數獨 僅部分填充 並不一定是可解的。我們僅需使填充的空格有效即可。首先明確合法要求 1.每行數字不重複 2.每列數字不重複 3.每個九宮格內數字不重複 判斷每行數字不重複 使用9 9的布林型陣列row,初...
leetcode 數獨遊戲
第乙個問題 用程式實現數獨的出題,而不是答題。換句話說就是驗證給定的乙個數獨中的九宮格,該九宮格是否滿足數獨遊戲的規則。數獨遊戲的規則是什麼 每一行沒有重複。每一列沒有重複。每乙個3x3的小格中沒有重複。方法一 一次迭代法 class solution validate a board for in...