數獨遊戲的規則是這樣的:在乙個9x9的方格中,你需要把數字1-9填寫到空格當中,並且使方格的每一行和每一列中都包含1-9這九個數字。同時還要保證,空格中用粗線劃分成9個3x3的方格也同時包含1-9這九個數字。比如有這樣乙個題,大家可以仔細觀察一下,在這裡面每行、每列,以及每個3x3的方格都包含1-9這九個數字。
樣例
sample input
7 1 2 ? 6 ? 3 5 8
? 6 5 2 ? 7 1 ? 4
? ? 8 5 1 3 6 7 2
9 2 4 ? 5 6 ? 3 7
5 ? 6 ? ? ? 2 4 1
1 ? 3 7 2 ? 9 ? 5
? ? 1 9 7 5 4 8 6
6 ? 7 8 3 ? 5 1 9
8 5 9 ? 4 ? ? 2 3
sample output
7 1 2 4 6 9 3 5 8
3 6 5 2 8 7 1 9 4
4 9 8 5 1 3 6 7 2
9 2 4 1 5 6 8 3 7
5 7 6 3 9 8 2 4 1
1 8 3 7 2 4 9 6 5
2 3 1 9 7 5 4 8 6
6 4 7 8 3 2 5 1 9
8 5 9 6 4 1 7 2 3
#include
#include
#include
using
namespace std;
struct node
;node arr[
105]
;char ch;
int map[10]
[10];
int n =0;
bool
judge
(int num,
int x,
int y)
x = x /3*
3;y = y /3*
3;for(
int i = x; i < x +3;
++i)
}return
true;}
void
dfs(
int dept)
cout << endl;
}return;}
for(
int i =
1; i <=9;
++i)}}
int line =0;
intmain()
else
map[0]
[0]= ch -
'0';
for(
int i =
0; i <9;
++i)
else
map[i]
[j]= ch -
'0';}}
if(line++
) cout << endl;
dfs(0)
;}return0;
}
C 解決數獨問題(回溯)
參考鏈結來自於 輸入乙個數獨作為9 9的陣列,例如輸入乙個測試資料map 9 9 為 0 9 0 0 0 0 0 6 0 8 0 1 0 0 0 5 0 9 0 5 0 3 0 4 0 7 0 0 0 8 0 7 0 9 0 0 0 0 0 9 0 8 0 0 0 0 0 6 0 2 0 7 0 0...
數獨 dfs 剪枝
參考 yxc 題意 就是給你乙個九宮格,讓你填數,使橫行包含1 9,縱行包含1 9,每一塊包含1 9 思路 本題採用深搜,然後通過用col和row分別記錄橫行和縱行沒有被用過的數,cell來標記沒有被用過的數,通過0代表這個數已經被用過了,1代表這個數沒有被用過,然後通過剪枝找到某個數可以填數的最小...
poj 2676 數獨問題 dfs
題意 完成數獨程式,數獨要求每行每列且每個3 3矩陣都必須是1 9的數字組成。思路 dfs 用row i n 記錄第i行n存在 用col j n 記錄第j列n存在 grid k n 記錄第k個3 3中的n存在 遍歷的時候,先把列遍歷完然後在遍歷行 if map r c 現在推第乙個矩陣為 0,0 0...