POJ 2676 數獨 程式設計之美1 15

2021-07-17 05:31:28 字數 886 閱讀 9341

演算法講解:

low逼演算法dfs,這裡如果不用空間換時間會tle

所以說我們加入三個判斷矩陣

hang[x][i]  第x行有沒有出現i

lie[x][i] 第i列有沒有出現i

sq[x][y][i] 以x,y為首標號的子矩陣有沒有i

然後總結一些常見錯誤:

1.每次試探成功,hang,lie,sq都要更新

2.我們如果不用bool型別的函式的話那麼每次都要在試探語句下面加上強制返回語句,用了bool型別,那麼加上if判斷就好了

ac**:

#include"iostream"

#include"cstring"

#include"cstdlib"

#include"cstdio"

using namespace std;

typedef struct node

point;

char data[10][10];

bool hang[10][10];

bool lie[10][10];

bool sq[10][10][10];

int starnum;

point star[100];

int flag=0;

void dfs(int x,int y,int num)

else

} }}

int main()

}} dfs(star[1].x,star[1].y,1);

for(int i=0;i<9;i++)

printf("\n");

} }

return 0;

}

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...

POJ 2676(數獨求解器 搜尋)

題目鏈結poj2676 給你乙個9 9的數獨讓你找出一種可行解 題目不難,有點類似於八皇后的做法,放上乙個數後,用x y z陣列標記上 之前一直習慣下標從1開始好理解,但做了這道題之後發現從0開始也是有好處的,從一行的最後乙個格仔跳到下一行的第乙個格仔時用取模來做很方便。總的來說這題的 寫得還算滿意...

POJ 2676 鍛鍊碼力 數獨,精確覆蓋的DLX

題意 先給定資料組數t,每組資料都是乙個數獨遊戲,輸出它任意乙個解。自從學了dlx之後,還沒寫過精確覆蓋,只用自己yy 寫過一次可重複覆蓋。這次寫乙個精確覆蓋。數獨麻煩的就是構建m矩陣,想了有一段時間。對於構建數獨的m矩陣,大都是這樣的套路 行表示的是在某個位置填某個數。列表示的是 某個位置是否有數...