Maze A 迷宮最短路徑問題

2021-10-03 13:10:42 字數 1124 閱讀 4134

東東有一張地圖,想通過地圖找到妹紙。地圖顯示,0表示可以走,1表示不可以走,左上角是入口,右下角是妹紙,這兩個位置保證為0。請根據輸入的5x5二維陣列,僅由0和1組成,請輸出最短路徑.

本題著重使用的是bfs,需要發掘的是每乙個點的鄰接點都有四個,思考如何訪問這些點,這是本題的乙個關鍵點.

此題的另乙個難點就是如何輸出最短路徑,也就是如何儲存最短路徑,"路徑"究其字面意思,這是個連續的路,緊扣連續,我們就想著每個訪問過的點應該有聯絡,記錄前驅節點就是一種聯絡.

#include

#include

using

namespace std;

const

int dx=

;const

int dy=

;struct path path[5]

[5];

pair<

int,

int> par;

bool c1[5]

[5];

queueint,

int>

> q;

char c[5]

[5];

void

bfs(

int x,

int y)}}

}}void

output

(int m,

int n)

int prex = path[m]

[n].prex1;

int prey = path[m]

[n].prey1;

output

(prex, prey);if

(m==

4&&n==4)

cout <<

"("<< path[m]

[n].x1 <<

", "

<< path[m]

[n].y1 <<

")";

else

cout <<

"("<< path[m]

[n].x1 <<

", "

<< path[m]

[n].y1 <<

")"<< endl;

}int

main()

迷宮最短路徑問題

問題描述 給定乙個迷宮和乙個起點乙個終點,求起點到終點的最短路徑長度。sample input 說明 5行5列的迷宮,為牆,為路,起點為 0,3 終點為 4,4 sample output 若不可達輸出 1 解答 用bfs的方法,借助乙個佇列實現。1 include2 include3 includ...

迷宮問題 最短路徑問題

給定乙個 n nn n 的二維陣列,如下所示 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求程式設計序找出從左上角到右下角的最短路線。資料保證至少存在一條從左上角走到右下角的路徑。輸入格式 第一行包含整數 n。接下來 nn 行,每行...

迷宮最短路徑

include include using namespace std const int max n 100,max m 100 const int inf 100000000 使用pair表示狀態時,使用typedef會更加方便一些 typedef pairp 輸入 char maze max ...