資料結構用棧解決n皇后問題

2021-08-01 14:18:48 字數 902 閱讀 5163

問題描述:

編寫乙個程式exp3-6.cpp,求解皇后問題:在n×n的方格棋盤上,放置n個皇后,要求每個皇后不同行、不同列、不同左右對角線。

要求:(1)皇后的個數n由使用者輸入,其值不能超過20,輸出所有的解。(2)採用類似於棧求解迷宮問題的方法。

原**:

#include #include #include #define maxsize 100

typedef struct

sttype; //定義順序棧型別

int count=0;

int place(sttype st,int i,int j) //測試(i,j)是否與1~i-1皇后有衝突

while (k<=i-1) //j=1到k-1是已放置了皇后的列

else

k++;

}a=1;

return a;

}void queen(int n) //求解n皇后問題

find=0;

for (j=1; j<=n; j++)

if (place(st,i+1,j)) //在i+1行找到乙個放皇后的位置(i+1,j)

if (find==0) //在i+1行找不到放皇后的位置,回溯

if (j>n) //當前皇后在本行沒有可放的位置

st.top--; //退棧

else //本行找到乙個位置後退出回溯

break;}}

}}int main()

結果展示:

學習心得:

通過棧來實現座標的表示。採用回溯法來進行計算。

用棧 回溯 非遞迴解決N皇后問題

問題及 檔名稱 queen.cpp 作 者 單昕昕 完成日期 2016年4月4日 版 本 號 v1.0 include include include include using namespace std const int maxsize 400 typedef struct linknode ...

資料結構學習之棧求解n皇后問題

深入掌握棧應用的演算法和設計 編寫乙個程式exp3 8.cpp求解n皇后問題。即在n n的方格棋盤上,放置n個皇后,要求每個皇后不同行 不同列 不同左右對角線。要求 1 皇后的個數n由使用者輸入,其值不能超過20,輸出所有的解。2 採用類似於棧求解迷宮問題的方法。include include in...

用棧解決N皇后問題(超詳細注釋 C C 實現)

深入掌握棧應用的演算法設計 編寫乙個程式,求解n皇后問題,即在n n方格棋盤上放置n個皇后,要求每個皇后不同行 不同列 不同左右對角線 皇后個數n由使用者輸入,其值不能超過20,輸出所有的解 採用類似於棧求解迷宮問題的方法 n皇后問題 by github include stdio.h includ...