參考: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 主...