寬度優先搜尋也是搜尋的手段之一。它與深度優先搜尋類似,從某個狀態出發探索所有可以到達的狀態。
const int inf = 100000000;
//使用pair表示狀態時,使用typedef會更加方便一些
typedef pair p;
char maze[max_n][max_m+1]; //表示迷宮的字串陣列
int n, m;
int sx, sy; //起點座標
int gx, gy; //終點座標
int d[max_n][max_m]; //到達各個位置的最短距離的陣列
//4個方向移動的向量
int dx[4] = , dy[4] = ;
//求從 到的最短距離
//如果無法到達,則是inf
int bfs() {
queueque;
//把所有的位置都初始化inf
for (int i = 0; i
寬度優先搜尋
include using namespace std const int n 700 const int inf 0x3f3f3f3f int dir 10 int n,a,b,ans 1000000 flag 0 int floor n struct node int check node tm...
寬度優先搜尋
寬度優先搜尋演算法 又稱廣度優先搜尋 是最簡便的圖的搜尋演算法之一,這一演算法也是很多重要的圖的演算法的原型。dijkstra單源最短路徑演算法和prim最小生成樹演算法都採用了和寬度優先搜尋類似的思想。其別名又叫bfs,屬於一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說...
深度優先搜尋與寬度優先搜尋
深度優先搜尋類似於樹的先序遍歷,從每個頂點開始深度優先遍歷,對該分支路徑深入遍歷到不能再深入為止,返回上層,若上一層有新的分支路徑,繼續遍歷該分支,直到所有點都被訪問 1 訪問該頂點,並標記為已訪問 2 if 該頂點的連線點未被訪問過 遞迴呼叫dfs 3 重複 2 直到該頂點的所有連線點都被訪問 t...