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

2021-09-29 01:10:38 字數 1383 閱讀 2967

深入掌握棧應用的演算法設計

編寫乙個程式,求解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...