挑戰程式設計競賽 2 1迷宮的最短路徑

2021-06-22 00:10:02 字數 776 閱讀 1535

迷宮的最短路徑

給定乙個大小為n*m 的迷宮,迷宮由通道和牆壁組成,每一步可以向鄰接的上下左右四個格的通道移動。請求出從起點到終點所需要的最小步數,請注意,本體假設從起點一定可以移動到終點。

限制條件:n,m <= 100

輸入:#s######. #

.. . . # . . .g#

輸出#include #include using namespace std;

#define max_n 10

#define max_m 10

const int inf = 100000000;

typedef pairp;

char maze[max_n][max_m+1] =

, ,,,

,,,,

,,};

int n = 10, m = 10;

int sx = 0;

int sy = 1;

int gx = 9;

int gy = 8;

int d[max_n][max_m];

int dx[4] = , dy = ;

int bfs()

{ queueque;

// 初始化所有距離為inf

for( int i = 0; i < n;i++)

{for( int j = 0; j

這裡很神奇的用到了乙個pair,pair相當於乙個結構體,可以將每個點的座標記錄下來。

bfs搜尋到的結果按照bfs的過程,就是該題目的最短路徑。

挑戰程式設計 迷宮的最短路徑(BFS)

目錄題解 寬度優先搜尋 題目詳情 description 給定乙個大小為 n m 的迷宮。迷宮由通道和牆壁組成,每一步可以向鄰接的上下左右四格的通道移動。請求出從起點到終點所需的最小步數 限制條件 n,m 100 input 輸入兩個數字 n 和 m,分別表示迷宮的長和寬,用空格隔開 輸入代表迷宮的...

迷宮最短路徑

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 迷...