數獨 dfs 剪枝

2021-09-24 01:19:12 字數 926 閱讀 1515

參考:yxc

題意:就是給你乙個九宮格,讓你填數,使橫行包含1 ~ 9,縱行包含1 ~ 9,每一塊包含1 ~ 9 。

思路:本題採用深搜,然後通過用col和row分別記錄橫行和縱行沒有被用過的數,cell來標記沒有被用過的數,通過0代表這個數已經被用過了,1代表這個數沒有被用過,然後通過剪枝找到某個數可以填數的最小可能,這個最小可能通過row[x] & cell[x/3][y/3] & col[y]來找到。

**:

#include

using namespace std;

const

int maxn =

100;

const

int n =9;

char str[maxn]

;int cell[10]

[10],row[maxn]

,col[maxn]

;int mp[

1<, ones[

1<;int

lowbit

(int x)

void

set_init()

}void

init()

intjudge

(int x,

int y)

bool dfs

(int cnt)}}

for(

int i =

judge

(x, y)

; i; i -

=lowbit

(i))

return false;

}int

main()

else cnt++;}

}dfs

(cnt)

;printf

("%s\n"

, str);}

return0;

}

poj2676 Sudoku 數獨,dfs 剪枝)

給定乙個不完整9 9數獨,未填部分用0表示,恢復數獨,並列印 在讀入的時候,我們開幾個陣列,sudoku 9 9 相當於這張數獨地圖,上面記錄值 checkrow 9 10 第i行,是否出現過數v,1 v 9 checkcol 9 10 第j列,是否出現過數v,1 v 9 square 9 10 第...

數獨簡單版(搜尋 剪枝)

數獨是一種傳統益智遊戲,你需要把乙個 9 9 9 9 的數獨補充完整,使得圖中每行 每列 每個 3 3 3 3 的九宮格內數字 1 9 1 9 均恰好出現一次。請編寫乙個程式填寫數獨。輸入格式 輸入共 9 9 行,每行包含乙個長度為 9 9 的字串,用來表示數獨矩陣。其中的每個字元都是 1 9 1 ...

9 9數獨(dfs暴力)

暴力,僅僅也是暴力而已 include using namespace std 構造完成標誌 bool sign false 建立數獨矩陣 int num 9 9 函式宣告 void input void output bool check int n,int key int dfs int n 主...