BFS 最短路徑 迷宮問題

2022-06-12 01:06:14 字數 1338 閱讀 5780

題目:

**:

#define _crt_secure_no_warnings#include

#include

#include

using

namespace

std;

typedef

struct

node

st;

int map[5][5], dx[4] = , dy[4] = , c = 0

;queue

q;st way[

50];

void

outs(st now)

}void

bfs()

; way[c++] =a;

q.push(a);

while

(q.size())

map[vertex.x][vertex.y] = 1

;

for (int i = 0; i < 4; i++)}}

return;}

int main(void

) }

bfs();

system(

"pause");

return0;

}

之前完全沒想到還有這種操作,學了鏈式前向星才想出來。

一,構造乙個結構體陣列,乙個結構體 儲存 乙個點的資訊,

所以模擬 邊集 我願此 結構體陣列 稱之為  點集

二,在 結構體 裡面設兩個變數,id  和 from

id:  是給每乙個 點 的的結構體標號

from:  是該點所連的前乙個點 所代表的結構體編號

如圖:假設要從 a- > e

入隊 順序是:a b c d e f

則他們的 id 為:0 1 2  3 4 5    from 為: -1 0 0 1 2 3

這樣我們根據 from 就可以找到前乙個的 id 了

三,這樣子做還是有缺點的:

比如 d 點, 從 b -> d 和從 e -> d,它的 from 就不一樣了,即舊的路徑會被新的路徑覆蓋。

但在這裡 我們只要 最先找到的那條路徑 就可以了,這也就不影響了。

如果 路是重複走到話(即繞了一圈,如圖中:走 abdecbdf),這樣子也是無法記錄的,

因為它繞不出來。但在最短路徑裡是不會出現走重複的路的,所以就沒影響了。

夜月  唐 劉方平

更深月色半人家,北斗闌干南斗斜。

今夜偏知春氣暖,蟲聲新透綠窗紗。

迷宮最短路徑問題 bfs

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

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