棧的應用 深度優先搜尋 二 列印出正確路徑

2021-08-21 20:31:37 字數 654 閱讀 8063

這一步實際上就是走到終點後,如何能夠列印出正確的一條路。

由於計算機會嘗試多條路徑都走到底試一遍才能找到最後的終點,所以如何輸出正確的路線也不是很簡單的事。

具體**如下:

#include #include"mystack.h"

#include #define maxrow 10

#define maxline 10

//巨集定義把迷宮 長寬都定義成10

using namespace std;

stack s;  //變成全域性,方便呼叫

point prepoint[maxrow][maxline];//建立乙個二維座標

int maze[maxrow][maxline] =

;void displymaze()

}#endif

if(flag==0)

else

cout<<"find no path"

point t=ep;

while(t._y!=-1)   //如果有出口,從出口終點,一步一步尋找這個點儲存的上一次的點

//按這步,然後進行反轉就形成了正確的路線,也就形成了自動尋路

return 0;

}

棧和佇列的應用 迷宮問題(深度 廣度優先搜尋)

給乙個二維列表,表示迷宮 0表示通道,1表示圍牆 給出演算法,求一條走出迷宮的路徑。maze 1,1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,0,1,0,1 1,0,0,1,0,0,0,1,0,1 1,0,0,0,0,1,1,0,0,1 1,0,1,1,1,0,0,0,0,1 1,0...

基於陣列的深度優先搜尋二例

寫了程式一定要總結。兩個都是由別人的問題引起的。問題1 巧排數字,將1,2,19,20這20個數字排成一排,使得相鄰的兩個數字之和為乙個素數,且首尾兩數字之和也為乙個素數。程式設計列印出所有的排法 列舉絕對要死人。指數級別的時間複雜度 這裡採用深度優先搜尋,程式中採用兩個陣列,乙個是resultar...

二叉樹的深度優先搜尋

分析 使用兩個棧來存放節點元素,棧1用來存放未遍歷過的節點,棧2用來存放遍歷的節點。具體步驟 1 把第乙個節點壓進棧1。見圖 a 2 把棧1中的棧頂節點彈出,壓進棧2 若棧1為空,且被彈出節點有子節點,則把被彈出節點的子節點按從右到左的順序壓進棧1。見圖 b 3 重複步驟2,直至棧1為空。見圖 c ...