廣度優先搜尋

2022-06-20 05:24:12 字數 1185 閱讀 1095

廣度優先搜尋

廣度優先搜尋演算法(breadth-first search,bfs)又稱寬度優先搜尋,是一種盲目搜尋法,目的是系統地展開並檢查圖中的所有節點,以找尋結果。換句話說,它並不考慮結果的可能位置,徹底地搜尋整張圖,直到找到結果為止。bfs並不使用經驗法則演算法。

呵呵,有一天我做了乙個夢,夢見了一種很奇怪的電梯。大樓的每一層樓都可以停電梯,而且第ii層樓(1 \le i \le n)(1≤i≤n)上有乙個數字k_i(0 \le k_i \le n)ki​(0≤ki​≤n)。電梯只有四個按鈕:開,關,上,下。上下的層數等於當前樓層上的那個數字。當然,如果不能滿足要求,相應的按鈕就會失靈。例如:3, 3 ,1 ,2 ,53,3,1,2,5代表了k_i(k_1=3,k_2=3,…)ki​(k1​=3,k2​=3,…),從11樓開始。在11樓,按「上」可以到44樓,按「下」是不起作用的,因為沒有-2−2樓。那麼,從aa樓到bb樓至少要按幾次按鈕呢?

共二行。

第一行為33個用空格隔開的正整數,表示n,a,b(1≤n≤200, 1≤a,b≤n)n,a,b(1≤n≤200,1≤a,b≤n)。

第二行為nn個用空格隔開的非負整數,表示k_iki​。

一行,即最少按鍵次數,若無法到達,則輸出-1−1。

輸入 #1複製

5 1 5

3 3 1 2 5

輸出 #1複製

3

#include#include

#include

using

namespace

std;

int a[100000

];bool b[10000

];int dl[100000][5

];int

main()

x1=a[dl[head][1]]+dl[head][1

]; x2=dl[head][1]-a[dl[head][1

]];

if(x1>0&&(!b[x1]))

if(x2>0&&(!b[x2]))

}while(head

cout

<

;}

搜尋 廣度優先搜尋

廣度優先搜尋一層一層地進行遍歷,每層遍歷都是以上一層遍歷的結果作為起點,遍歷乙個距離能訪問到的所有節點。需要注意的是,遍歷過的節點不能再次被遍歷。class solution,int shortestpathbinarymatrix vectorint grid length return 1 cl...

廣度優先搜尋

include include include include using namespace std struct node 圖頂點結構定義 typedef struct node graph 圖形的結構新型態 struct node head 9 圖形頂點陣列 int visited 9 遍歷標...

廣度優先搜尋

廣度優先搜尋詳解 1.也稱寬度優先搜尋,顧名思義,就是將一棵樹一層一層往下搜。演算法首先搜尋和s距離為k的所有頂點,然後再去搜尋和s距離為k l的其他頂點。bfs是一種完備策略,即只要問題有解,它就一定可以找到解。並且,廣度優先搜尋找到的解,還一定是路徑最短的解。但是它盲目性較大,尤其是當目標節點距...