leetcode 數獨是否合法與解數獨

2021-10-17 12:36:43 字數 1663 閱讀 4465

看到解數獨就想到了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...