poj3984 迷宮問題)

2021-06-22 20:25:29 字數 793 閱讀 7966

這題寬度優先搜尋的題目,不過最後是輸出最短路徑,而不是步數。

我當時做題時用的方法是,先從最右下到左上用bfs遍歷一遍,記錄好到達每個節點的步數,

然後反過來,從左上開始搜尋,每次搜尋之前記錄的步數比當前節點步數少一的點,符合條件的便是要輸出的點。

為什麼可以這樣,因為bfs保證了每個節點只會訪問一次,也就是說,每個節點它的父節點(根節點除外)是唯一的,

就像一棵樹從樹幹到樹葉有很多分支,但是,從某片樹葉到樹幹路徑是唯

一、明確的,當然,這不是一顆長得很怪的樹。

還有一點就是資料保證有唯一解,就是本來從左上角到右下路徑唯一。

(當然,也bfs時也可以記錄它是通過誰走到這個點的,最後,倒過來尋找父節點,

原理是一樣的,都是在bfs時記錄上一節點的資訊。)

**:#include#include#includeusing namespace std;

int main()

,dy[4]=,vis[5][5],map[5][5];

char ch[5][5];

for (i=0;i<5;i++)

for (j=0;j<5;j++)

cin>>ch[i][j];

int vx=0,vy=0;

q.push(4);

q.push(4);

memset(vis,0,sizeof(vis));

memset(map,0,sizeof(map));

while (!q.empty())

}} vx=0;vy=0;

cout<<"(0, 0)"<

POJ3984 迷宮問題

題目 迷宮問題 time limit 1000ms memory limit 65536k total submissions 3183 accepted 1861 description 定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎...

POJ 3984 迷宮問題

一道比較簡單的bfs題 include include include include define max 6 using namespace std int map max max px max max py max max int movex 4 movey 4 bool vis max ma...

POJ 3984 迷宮問題

迷宮問題 time limit 1000ms memory limit 65536k total submissions 7047 accepted 4123 description 定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,...