深入掌握棧應用的演算法設計
編寫乙個程式,求解n皇后問題,即在n*n方格棋盤上放置n個皇后,要求每個皇后不同行、不同列、不同左右對角線
皇后個數n由使用者輸入,其值不能超過20,輸出所有的解
採用類似於棧求解迷宮問題的方法
n皇后問題 -by- github
#include
"stdio.h"
#include
"stdlib.h"
#include
"io.h"
#include
"math.h"
#include
"time.h"
#define ok 1
#define error 0
#define true 1
#define false 0
#define maxsize 20
/* 儲存空間初始分配量 */
typedef
int status;
typedef
int selemtype;
/* selemtype型別根據實際情況而定,這裡假設為int */
/* 順序棧結構 */
typedef
struct
sqstack;
int count =0;
/*呼叫此方法用於檢測是否符合n皇后規則*/
intplacequeen
(sqstack s,
int i,
int j)
/*如果不是第一行,則i到這裡肯定》=2*/
while
(k <= i -1)
//j=1到k-1是已經放置了皇后的列
else
k++;}
a =1;
return a;
}void
queen
(int n, sqstack &s)
find =0;
/*在i+1行探尋乙個放皇后的位置(i+1,j)*/
for(j =
1; j <= n; j++
)/*條件正確,表明探尋到乙個合適的位置-->行列入棧*/if(
placequeen
(s, i +
1, j)
)/*當前行無目標-->退棧*/
if(find ==0)
/*當前皇后在本行沒有可放位置,退棧
用棧 回溯 非遞迴解決N皇后問題
問題及 檔名稱 queen.cpp 作 者 單昕昕 完成日期 2016年4月4日 版 本 號 v1.0 include include include include using namespace std const int maxsize 400 typedef struct linknode ...
資料結構用棧解決n皇后問題
問題描述 編寫乙個程式exp3 6.cpp,求解皇后問題 在n n的方格棋盤上,放置n個皇后,要求每個皇后不同行 不同列 不同左右對角線。要求 1 皇后的個數n由使用者輸入,其值不能超過20,輸出所有的解。2 採用類似於棧求解迷宮問題的方法。原 include include include def...
c 實現八皇后問題(詳細注釋)
include include using namespace std class queen 建構函式 queen queen int n num n 析構函式 queen queen 判斷皇后是否衝突 考察皇后k放置在x k 列是否發生衝突 int queen place int k retur...