BFS 迷宮問題(求最短路)

2021-08-18 18:14:35 字數 1217 閱讀 9379

題目:

給定乙個大小為 n×m 的迷宮。迷宮由通道和牆壁組成,每一步可以向鄰接的上下左右四格

的通道移動。請求出從起點到終點所需的最小步數。請注意,本題假定從起點一定可以移動

到終點。

限制條件;

// bfs(迷宮問題自己寫)

//// created by showlo on 2018/4/13.

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

typedef pairp;

#define max_n 102

#define max_m 102

#define inf 1000000

int n,m;

char map[max_n][max_m];

int direct[max_n][max_m];

int sx,sy,gx,gy;

int ans;

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

int bfs(int sx,int sy,int gx,int gy)

{ int nx,ny;

queueq;

memset(direct, inf, sizeof(direct));

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

direct[sx][sy]=0;

while (q.size()) {

p q=q.front();

q.pop();

if (q.first==gx&&q.second==gy)

break;

else{

for (int i=0; i<=3; i++) {

nx=q.first+dx[i];

ny=q.second+dy[i];

if (nx<0||nx>n||ny<0||ny>m||map[nx][ny]=='#'||direct[nx][ny]體會:目前感覺bfs比dfs簡單一些,只需要乙個while迴圈不停入隊出隊就可以了。也可能是昨天被dfs虐的太慘了(捂臉哭

迷宮最短路徑問題 bfs

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

BFS 最短路徑 迷宮問題

題目 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 o...

BFS求最短路

假設有乙個n行m列的迷宮,每個單位要麼是空地 用1表示 要麼是障礙物 用0表示 如和找到從起點到終點的最短路徑?利用bfs搜尋,逐步計算出每個節點到起點的最短距離,以及最短路徑每個節點的前乙個節點。最終將生成一顆以起點為根的bfs樹。此時bfs可以求出任意一點到起點的距離。poj3984 bfs求最...