1 15 構造數獨

2021-09-07 05:09:35 字數 686 閱讀 2673

(一)

用回溯法構造數獨

#include #include #include #include #include using namespace std;

int sudu[9][9];

void sudu_print(int sudu[9])

cout << endl;

};}bool is_digital_sudu(int sudu[9], int i, int j)

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

int p = i / 3;

int q = j / 3;

for(int m = 3 * p; m < 3 * p + 3; ++m)

return true;

}int main()

int k = 0;

while(1) else if(is_digital_sudu(sudu, x, y))

}if(81 == k)

}return 0;

}

在linux下執行的話,先執行命令:g++ 檔名稱.cpp   然後假設程式沒有錯誤的話。那麼在該資料夾以下會自己主動生成乙個檔案:.out。

所以這個時候繼續在該資料夾下執行:

./a.out

(二)利用書上的置換的方法,簡單。

1 15 構造數獨

一 用回溯法構造數獨 include include include include include using namespace std int sudu 9 9 void sudu print int sudu 9 cout endl bool is digital sudu int sudu...

程式設計之美1 15 構造數獨

問題 構造乙個9 9的方格矩陣,玩家要在每個方格中,分別填上1至9的任意乙個數字,讓整個棋盤每一列 每一行以及每乙個3 3的小矩陣中的數字都不重複。首先我們通過乙個深度優先搜尋來生成乙個可行解,然後隨機刪除一定數量的數字,以生成乙個數獨。include include using namespace...

程式設計之美 1 15 構造數獨

1.15 構造數獨 數獨的棋盤,由9 9 81個小方格組成,數獨要求每一行 每一列 以及每乙個3 3的小矩陣中的數字都不重複 深度優先搜尋,回溯法 從 0,0 開始,沒有處理的呼叫函式獲取可能的取值,取乙個為當前值,搜尋下乙個個子,搜尋過程中,若出現某個格仔沒有可行值,則回溯,修改前乙個格仔的取值 ...