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

2022-09-03 18:00:11 字數 1072 閱讀 6849

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

​ 編寫乙個程式exp3-8.cpp求解n皇后問題。

即在n×n的方格棋盤上,放置n個皇后,要求每個皇后不同行、不同列、不同左右對角線。

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

#include #include #include #include #define maxsize 100000+7

#define maxsize 20+7

using namespace std;

int path[maxsize][maxsize];

int n;

int y_pos[maxsize];

int count=0;

bool judge(int num)

void destroystack(sttype *&s)

bool gettop(sttype *&s,box &e)

bool push(sttype *&s,box e)

bool pop(sttype *&s,box &e)

int getlength(sttype *s)

bool emptystack(sttype *s)

void setpath(int ex,int ey,int k)

void solveq(int n)

while(y1data[st->top].y=y1;

if(judge(x1))

}if(!find)

//pop(st,e);

}}int main()

​ 當時我在寫的時候很糾結從0開始的問題,思想肯定是這樣子的,先遍歷每一行的每一列,然後在回溯。那麼就需要做好回溯的標誌e.x記錄當前在第幾行,方便下次回溯到e.x-1,這裡唯一需要注意的是判斷列印條件,if(x1==n),一開始我以為既然已經讓第七行進棧了,那麼說明滿足,但是後面我理解錯了,程式的邏輯是下一行進棧開始的時候y1=-1的,也就是我們要去到第8行才能知道第7行的結果是可以的。

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

問題描述 編寫乙個程式exp3 6.cpp,求解皇后問題 在n n的方格棋盤上,放置n個皇后,要求每個皇后不同行 不同列 不同左右對角線。要求 1 皇后的個數n由使用者輸入,其值不能超過20,輸出所有的解。2 採用類似於棧求解迷宮問題的方法。原 include include include def...

資料結構學習 棧

這一系列部落格的目的在於複習鞏固資料結構的基礎知識,為考研面試筆試做準備,所以重在原理,實踐不是重點。參考書籍有嚴蔚敏老師的 資料結構 c語言版 c c 資料結構與演算法速學速用大辭典 define stacksize 100 typedef int datatype typedef structs...

資料結構學習之棧 佇列等

gdb除錯段錯誤 1.ulimit c unlimited 2.ulimit c 1000 3.gcc 檔案 g 4.執行程式 a.out 生成core檔案 5.gdb a.out core 順序棧1.出棧 datatype popseqstack seqstack stack 功能 從順序棧中出棧...