資料結構程式設計回顧(三)八皇后問題(遞迴)

2021-08-22 12:13:04 字數 401 閱讀 7232

由於作者比較懶,當年就用了遞迴實現而已,沒有用棧的非遞迴實現。

由定義可知,每行必定有且僅有乙個皇后,使用一維陣列儲存即可,每個元素儲存這一行元素的位置。

根據已知條件(同行、同列或同一一條線)不能放置兩個皇后(後來知道皇后是可以橫著走斜著走豎著走的,如果滿足這些條件會被吃掉),判斷第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行時,每次迴圈得到的二維陣...