迷宮的最短路線(BFS

2021-07-09 02:22:22 字數 1083 閱讀 7893

迷宮的最短路線(bfs)

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

限制條件:n,m<100

思路:1.初始化迷宮maze[i][j],並對其每乙個位置附上乙個很大的值來表示狀態d[i][j](有沒有走過)。

2.取起點座標將其加入佇列que

3.用while迴圈體

1)取出隊首元素,並將其出隊(如果是終點,那直接break)

2)用for迴圈來遍歷上下左右4個方向,找出符合條件的座標,並把到該位置的距離確定到p的距離+1(不超出迷宮範圍,該座標還不是終點座標,該座標還沒有走過)

4.return d[gx][gy]

**:

#include #include using namespace std;

const int inf=100000000;

const int max_n=100,max_m=100;

int n,m;

int sx,sy;//起點座標

int gx,gy;//終點座標

char maze[max_n][max_m+1];//表示迷宮的字串的陣列

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

int dx[4]=,dy[4]=;//4個方向移動的向量

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

void solve();

int bfsn();

int main()

else if (maze[i][j]=='g')

} solve();

return 0;

}void solve()

{ int res=bfsn();

cout<<"最短路徑是:"//把所有位置都初始化為inf

for (int i=0;i

本題應用了bfs(廣度優先搜尋),佇列,還應用了typedef,pair

關於typedef和pair,之後再說明

送快遞的最短路線

題目描述 某物流派送員p,需要給a b c d4個快遞點派送包裹,請問派送員需要選擇什麼的路線,才能完成最短路程的派送。假設如圖派送員的起點座標 0,0 派送路線只能沿著圖中的方格邊行駛,每個小格都是正方形,且邊長為1,如p到d的距離就是4。隨機輸入n個派送點座標,求輸出最短派送路線值 從起點開始完...

lintcode 騎士的最短路線

給定騎士在棋盤上的 初始 位置 乙個2進製矩陣 0 表示空 1 表示有障礙物 找到到達 終點 的最短路線,返回路線的長度。如果騎士不能到達則返回 1 如果騎士的位置為 x,y 他下一步可以到達以下這些位置 x 1,y 2 x 1,y 2 x 1,y 2 x 1,y 2 x 2,y 1 x 2,y 1...

演算法記錄 騎士的最短路線

給定騎士在棋盤上的 初始 位置 乙個2進製矩陣 0 表示空 1 表示有障礙物 找到到達 終點 的最短路線,返回路線的長度。如果騎士不能到達則返回 1 說明 如果騎士的位置為 x,y 他下一步可以到達以下這些位置 x 1,y 2 x 1,y 2 x 1,y 2 x 1,y 2 x 2,y 1 x 2,...