POJ 3984 迷宮問題 經典BFS問題

2021-10-04 23:31:04 字數 903 閱讀 8017

bfs直接適合用在處理資料較少的的題目,如果資料量太大bfs處理不來。

bfs在求解最短路徑或者最短步數上有很多的應用。

應用最多的是在走迷宮上。

現在這題的主要難點是在記錄上一步的節點,不過這題的資料量比較小,

所以不用佇列,用一維陣列就好了。結構體內定義乙個c變數來記錄上一點。

struct euq[6*

6];

也不用考慮,在轉彎節點中的c會不會記錄比較遠的路徑的上一點,因為路徑短的比路徑長優先遍歷了,

此時的轉彎節點已經被標記了,所以不用擔心被路徑長的節點再次訪問。

下面我們看**。

#include

#include

#include

#include

using

namespace std;

int map[5]

[5],vis[5]

[5];

//vis記錄是否訪問

int d[4]

[2]=

,,,}

;//上下左右方向

struct euq[6*

6];void

print

(int head)

//查詢輸出

printf

("(0, 0)\n");

}void

bfs(

)for

(int i=

0;i<

4;i++)}

} head++;}

}int

main()

}bfs()

;return0;

} ```

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表示可以走的路,只能橫著走或豎著走,...