東東有一張地圖,想通過地圖找到妹紙。地圖顯示,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 ...