問題描述:
編寫乙個程式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...