寬度優先搜尋模板 題目

2021-09-25 14:23:14 字數 1778 閱讀 4298

也是搜尋手段是之一,它餘深度優先搜尋類似,從乙個起點出發探索所有可能的結果,是用佇列實現。

#define inf=0x3f3f3f3f;

const

int maxn=

1000

;//對節點的定義可以用struct 或者有乙個stl pair的用法

struct nodep,pp;

//typedef pairp;

char maze[maxn]

[maxn]

;//儲存迷宮,如果是那種棋盤的可以不用這個,要自己輸入

int m,n;

//實際的要搜尋的矩陣大小

int sx,sy;

//記錄開始搜尋位置

int ex,ey;

//記錄結束位置

int d[maxn]

[maxn]

;//記錄步數

int dx

;int dy

;//移動方式,存入陣列可以用for迴圈遍歷

intbfs()

}//先給每個點附上初值

p.x=sx;

p.y=sy;

que.

push

(p);

//把初始的起點壓入佇列開始遍歷

d[sx]

[sy]=0

;//令其實那個距離為0

while

(que.

size()

)}}return d[ex]

[ey];}

intmain()

poj 1915 knight moves

給測試組數,每組數,第乙個是這個棋盤的大小,然後就是起點與終點的座標,找出,從起點到終點的最小距離

題解

基本上套用上面那個模板就過了,還沒有模板複雜,不用輸入迷宮,然後騎士的走位有點不一樣,換好走位基本上就可以過了

**

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define ll long long

using namespace std;

//typedef pairp;

struct nodep,pp;

int dx[8]

=;int dy[8]

=;int d[

301]

[301];

int maze[

301]

[301];

int sx,sy;

int ex,ey;

int n;

intbfs()

} p.x=sx;

p.y=sy;

que.

push

(p);

d[sx]

[sy]=0

;while

(que.

size()

)}}return d[ex]

[ey];}

intmain()

return0;

}

寬度優先搜尋

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,屬於一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說...

寬度優先搜尋

寬度優先搜尋也是搜尋的手段之一。它與深度優先搜尋類似,從某個狀態出發探索所有可以到達的狀態。const int inf 100000000 使用pair表示狀態時,使用typedef會更加方便一些 typedef pair p char maze max n max m 1 表示迷宮的字串陣列 in...