POJ 2676(數獨求解器 搜尋)

2021-07-25 03:07:48 字數 991 閱讀 1001

題目鏈結poj2676

給你乙個9*9的數獨讓你找出一種可行解

題目不難,有點類似於八皇后的做法,放上乙個數後,用x、y、z陣列標記上

之前一直習慣下標從1開始好理解,但做了這道題之後發現從0開始也是有好處的,從一行的最後乙個格仔跳到下一行的第乙個格仔時用取模來做很方便。

總的來說這題的**寫得還算滿意

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int t;

int cell[10][10];

int x[10][10];//x[i][k]表示第i列是否能放k

int y[10][10];//y[i][k]表示第i行是否能放k

int z[10][10];//z[i][k]表示第i個3*3的格仔是否能放k 格仔標號為0~8

int flag;

void print()

void re_update(int a,int b,int m)

void init()}}

}bool is_out(int a,int b)

int next_a(int a,int b)//獲取a行b列的下一格的行數

int next_b(int a,int b)

bool is_can(int a,int b,int m)//判斷a行b列是否能放x

void dfs(int a,int b)

if(cell[a][b]!=0)

else}}

}int main()

//print();

init();

dfs(0,0);

}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 數獨 程式設計之美1 15

演算法講解 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.我們...

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

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