迷宮的最短路徑

2021-06-26 23:51:19 字數 1034 閱讀 5591

/*

雖然在網上找不到題目,但這題實在是太經典了,好多搜尋題目都是從它變形來的

從s走到g,'#'不能走

測試資料

10 10

#s######.#

......#..#

.#.##.##.#

.#........

##.##.####

....#....#

.#######.#

....#.....

.####.###.

....#...g#

*/#include#include#includeusing namespace std;

const int inf=100000000;

#define max_n 105

#define max_m 105

//使用pair表示狀態時,使用typedef會更加方便一些

typedef pairp;

char maze[max_n][max_m+1]; //表示迷宮的陣列 m+1儲存'\0'

int n,m;

int sx,sy; //起點座標

int gx,gy; //終點座標

int d[max_n][max_m]; //到各個位置的最短距的陣列

//4個方向移動的向量

int dx[4]=,dy[4]=;

//求從(sx,sy)到(gx,gy)的最短距離

//如果無法到達,則是inf

int bfs()

//將起點加入佇列,並把這一地點的距離設定為0

que.push(p(sx,sy));

d[sx][sy]=0;

//不斷迴圈直到佇列的長度為0

while(que.size())

} }return d[gx][gy];

}void solve()

int main()

for(i=0;i} solve();

} return 0;

}

迷宮最短路徑

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

迷宮最短路徑

問題描述 小a同學現在被困在了乙個迷宮裡面,他很想從迷宮中走出來,他可以向上 向下 向左 向右移動 每移動一格都需要花費1秒的時間,不能夠走到邊界之外。假設小a現在的位置在s,迷宮的出口在e,迷宮可能有多個出口。問小a想要走到迷宮出口最少需要花費多少秒?並輸出從起點到最近出口的路徑。任務要求 1 迷...

迷宮的最短路徑

迷宮的最短路徑 給定乙個大小為n m的迷宮。迷宮由通道和牆壁組成,每一步可以向鄰接的上下左右的通道移動。請求出從起點到終點所需的最小步數。注意,本題假設從起點一定可以到達終點。const inf 10000000 typedef pairp 狀態 輸入 cahr maze maxn maxm 1 i...