由於作者比較懶,當年就用了遞迴實現而已,沒有用棧的非遞迴實現。
由定義可知,每行必定有且僅有乙個皇后,使用一維陣列儲存即可,每個元素儲存這一行元素的位置。
根據已知條件(同行、同列或同一一條線)不能放置兩個皇后(後來知道皇后是可以橫著走斜著走豎著走的,如果滿足這些條件會被吃掉),判斷第n行第i列是否能放置皇后:
int puts(int n,int i)
int i;
for(i=0;i完整**:
#include #include //八皇后問題
int queens[100];
int num;
int c;
using namespace std;
void print()
資料結構 八皇后問題
八皇后問題簡述 即求8 8的棋盤的所有合法布局,所為合法布局就是 棋盤上共擺放八個棋子,使得每兩個棋子都不在棋盤上的同一行 或者同一列 或同一對角線。在查詢所有情況過程中利用回溯法,回溯法的基本做法是搜尋,或是一種組織得井井有條的,能避免不必要搜尋的窮舉式搜尋法。這種方法適用於解一些組合數相當大的問...
資料結構 八皇后問題
include int count 0 八皇后問題 param row 表示起始行 param col 表示列數 param chess 指向每一行的指標 return int notdanger int row,int j,int chess 8 判斷左上方 for i row,k j i 0 k...
資料結構08 八皇后問題
目錄 一 遞迴實現八皇后問題分析 二 實現 1.定義乙個棋盤,並定義乙個列印棋盤的方法 2.判斷某個格仔是否可以放置皇后 3.設計棋盤 1.每一次回溯計算出一行中滿足條件的格仔 2.回溯的方法中,會利用乙個迴圈來判斷一行中滿足條件的格仔,即一行中滿足的列 3.當行數自增到8行時,每次迴圈得到的二維陣...