深入掌握棧應用的演算法和設計
編寫乙個程式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 功能 從順序棧中出棧...