迷宮 最短路徑距離 BFS

2021-07-30 22:50:10 字數 876 閱讀 1753

已知條件:

迷宮地圖:0-不通,1通

二維陣列(n*m)

0 0 0 0 0 0 0 0

0 1 1 0 0 1 0 0

0 0 1 1 1 1 0 0

0 1 1 1 0 1 1 1

1 1 1 0 0 0 0 1

起始點:s(2,2)

求解所有可通過的點到起始點的最短距離。

演算法:

#include #include #include #include using namespace std;

typedef pairpos;

int n,m;

//下、右、上、左四個方向

int dx[4]=;

int dy[4]=;

int *src;//迷宮資訊陣列

int *dist;//各位置到起始點的最短路徑距離

int sx,sy;//起始點位置

//從檔案中讀取迷宮地圖資料

void readdata()

else

}in.close();

n = n;

m = k/n;

src = new int[n*m]; //分配迷宮陣列

dist = new int [n*m]; //分配距離陣列

}//利用bfs計算路徑距離

void bfs(int ex, int ey)//輸入終點位置

}que.push(pos(sx,sy));

d[sx * n + sy] = 0;

while(que.size())}}

}int main()}}

return 0;

}

BFS 迷宮的最短路徑

迷宮的最短路徑 給定乙個大小為n m的迷宮。迷宮由通道和牆壁組成,每一步可以 向鄰接的上下左右四個方位的通道移動,請求出從起點到終點所需的最小不熟。此題假設一定能從起點到終點 限制條件 n,m 100 樣例 輸入 10 10 s g 輸出 22 include include includeusin...

迷宮的最短路徑 bfs

給定乙個大小為n m的迷宮,由通道 和牆壁 組成,其中通道s表示起點,通道g表示終點,每一步移動可以達到上下左右中不是牆壁的位置。試求出起點到終點的最小步數。本題假定迷宮是有解的 n,m 100 樣例輸入 樣例輸出 include include include using namespace st...

迷宮最短路徑問題 bfs

問題 求起點到終點的最小步數 分析 廣搜按照距開始狀態由近及遠的順序進行搜尋,因此很容易地來求最短路徑 最小操作之類問題的答案。include include include includeusing namespace std const int inf 10000000 typedef pair...