這一步實際上就是走到終點後,如何能夠列印出正確的一條路。
由於計算機會嘗試多條路徑都走到底試一遍才能找到最後的終點,所以如何輸出正確的路線也不是很簡單的事。
具體**如下:
#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 ...