廣度優先搜尋
廣度優先搜尋演算法(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輸出 #1複製3 3 1 2 5
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是一種完備策略,即只要問題有解,它就一定可以找到解。並且,廣度優先搜尋找到的解,還一定是路徑最短的解。但是它盲目性較大,尤其是當目標節點距...