解救小哈 BFS演算法舉例

2021-09-07 19:55:51 字數 1357 閱讀 6147

有一天,小哈乙個人去玩迷宮。但是方向感不好的小哈很快就迷路了。小哼得知後便去解救無助的小哈。此時的小哼已經弄清楚了迷宮的地圖,現在小哼要以最快的速度去解救小哈。那麼,問題來了...

輸入5 4

0 0 1 0

0 0 0 0

0 0 1 0

0 1 0 0

0 0 0 1

1 1 4 3

輸出輸入

3 31 1 1 

0 1 0 

0 1 0 

2 1 3 3

輸出no way!

思路:與dfs類似,但是dfs尋找所有解,bfs只尋找乙個解,且此解一定為最優解,bfs相對較快,需要用到queue,類似於鍊錶的操作。尋找最優解問題用bfs,防止超時。

#include #include #include using namespace std;

int n, m;

int hax, hay; //小哈座標

int minstep = 0x3f3f3f3f; //最小步數

const int max = 105;

int map[max][max], vis[max][max]; //初始迷宮,記錄迷宮

int next[4][2] = , , , }; //移動

struct node //結構體記錄當前狀態

;void bfs (int x, int y) //bfs

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

if (map[tail.x][tail.y] == 0 && vis[tail.x][tail.y] == 0)}}

}int main()

}int startx, starty; //初始座標

cin >> startx >> starty >> hax >> hay;

bfs(startx, starty);

vis[startx][starty] = 1;

cout << minstep << endl;

return 0;

}

啊哈演算法 bfs 解救小哈

include struct note 定義乙個結構體佇列 int main book 51 51 a陣列存地圖,book標記那個點走過 int next 4 2 定義的方向 int head,tail 標記頭和尾 int i,j,k,n,m,startx,starty,endx,endy,tx,t...

解救小哈 廣度優先搜尋bfs

有一天,小哈乙個去玩迷宮。但是方向感很不好的小哈很快就迷路了。小哼得知後便立即去解救無助的小哈。小哼當然是有備而來,已經弄清楚了迷宮地圖,現在小哼要以最快速度去解救小哈。問題就此開始了 迷宮由n行m列的單元格組成,每個單元格要麼是空地,要麼是障礙物。你的任務是幫助小哼找到一條從迷宮的起點到小哈所在位...

啊哈演算法之解救小哈

題目描述 有一天,小哈乙個去玩迷宮。但是方向感很不好的小哈很快就迷路了。小哼得知後便立即去解救無助的小哈。小哼當然是有備而來,已經弄清楚了迷宮地圖,現在小哼要以最快速度去解救小哈。問題就此開始了 迷宮由n m列的單元格組成,每個單元格要麼是空地,要麼是障礙物。你的任務是幫助小哼找到一條從迷宮的起點到...