題意就是求數獨的解
數獨遊戲的規則是這樣的:在乙個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個月的時間設計出來的較難的目。但對會使用計算機程式設計的你來說,恐怕易如反掌了 本題的要...