問題:
構造乙個9*9的方格矩陣,玩家要在每個方格中,分別填上1至9的任意乙個數字,
讓整個棋盤每一列、每一行以及每乙個3*3的小矩陣中的數字都不重複。
首先我們通過乙個深度優先搜尋來生成乙個可行解,然後隨機刪除一定數量的數字,
以生成乙個數獨。
#include #include using namespace std;
#define len 9
#define clear(a) memset((a), 0, sizeof(a))
int level = ;
int grid[len+1][len+1];
int value[len+1];
void next(int &x, int &y)
}// 選擇下乙個有效狀態
int picknextvalidvalue(int x, int y, int cur)
else
// 進一步搜尋
next(x,y);
} for (i=1; i<= level[2]; i++)
for (i=1; i<=len; i++)
}
程式設計之美 1 15 構造數獨
1.15 構造數獨 數獨的棋盤,由9 9 81個小方格組成,數獨要求每一行 每一列 以及每乙個3 3的小矩陣中的數字都不重複 深度優先搜尋,回溯法 從 0,0 開始,沒有處理的呼叫函式獲取可能的取值,取乙個為當前值,搜尋下乙個個子,搜尋過程中,若出現某個格仔沒有可行值,則回溯,修改前乙個格仔的取值 ...
讀書筆記之程式設計之美 1 15 構造數獨
計算機似乎尤其適合解決這類,結合書中提出的兩個解法,以及物件導向的思路,應該把每個3x3格仔作為乙個物件,然後隨機初始化中間格仔,再分別構造上下左右,最後構造四個角上的格仔。不過都涉及到動態規劃,如果有某個格仔找不到答案,還得回退回來找別的答案。之前真沒有玩過數獨,今天正好練習一下,附書後最後乙個練...
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.我們...