hdoj 1426數獨 (深搜回溯)

2021-07-02 13:03:40 字數 1117 閱讀 3176

題意就是求數獨的解

數獨遊戲的規則是這樣的:在乙個9x9的方格中,你需要把數字1-9填寫到空格當中,並且使方格的每一行和每一列中都包含1-9這九個數字。同時還要保證,空格中用粗線劃分成9個3x3的方格也同時包含1-9這九個數字。比如有這樣乙個題,大家可以仔細觀察一下,在這裡面每行、每列,以及每個3x3的方格都包含1-9這九個數字。

終於做了一道有點意思的題了,蛤蛤,雖然是水題,但一開始腦洞開得有點大,以為回溯肯定會超時所以各種亂想,後來想了一下肯定不會超時就開始做了,輸入各種蛋疼各種pe,做了一晚上終於ac

#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;  

#define ll long long

const int maxn = 10;

struct node nodes[maxn*maxn];

int g[maxn][maxn];

int visx[maxn][maxn], visy[maxn][maxn], visb[maxn][maxn]; //行、列、塊的訪問標記

int flag,num; //是否已完成搜尋

void dfs(int step)

printf("\n");

} flag = 1;

return; }

int x = nodes[step].x, y = nodes[step].y;

int block = ((x - 1) / 3) * 3 + (y - 1)/3 + 1; //塊號

for(int i = 1; i <= 9; i++) }}

int main()

else

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

for (int j = 1; j <= 9; j++)

else

}if(kase++) printf("\n");

dfs(0);

}return 0;

}

解數獨(深搜 回溯)

本題hard難度但是解體思路就是很普通的深搜 回溯 需要考慮的點是遞迴的深搜進行的條件和狀態的記錄 用boolean陣列來記錄每個行 列 九宮格裡1 9的存在情況 先遍歷一次原陣列,記錄空格的位置並對boolean陣列進行初始化 然後對空格位置進行dfs。class solution else df...

數獨 深搜 剪枝 遞迴 回溯

數獨是乙個我們都非常熟悉的經典遊戲,運用計算機我們可以很快地解開數獨難題,現在有一些簡單的數獨題目,請編寫乙個程式求解。輸入描述 輸入9行,每行為空格隔開的9個數字,為0的地方就是需要填充的。輸出描述 輸出九行,每行九個空格隔開的數字,為解出的答案。思路 深搜 剪枝 遞迴 回溯凡是類似於迷宮的尋找路...

數獨遊戲(dfs深搜)

如下所示,玩家需要根據9 9盤面上的已知數字,推理出所有剩餘空格的數字,並滿足每一行 每一列 每乙個色九宮內的數字均含1 9,不重複 數獨的答案都是唯一的,所以,多個解也稱為無解 本圖的數字據說是芬蘭數學家花了3個月的時間設計出來的較難的目。但對會使用計算機程式設計的你來說,恐怕易如反掌了 本題的要...