搜尋理解(DFS BFS)

2021-08-21 13:50:17 字數 521 閱讀 3298

dfs:

深搜是從當前位置一次所能到達的位置,乙個位置乙個位置的去查詢,當遇到不能在行走時(即不符合條件時),return;返回到上一層函式,當試探完乙個位置後要把標記取消,也就是所說的回溯;換乙個方向繼續查詢直到查詢完所有可以到達的地方,(當然,也可以找到一條符合條件的路線後,定義乙個flag不再繼續進行查詢下去,返回就好了;注意第一次查詢到的路線不一定是最快的,與廣搜不同)。dfs因為乙個乙個的查詢,所花費的時間比較多,也就出現了剪枝;其實也就是多加一些判斷條件,不符合的話直接return返回上一層函式,不再進行一些無用的查詢。

bfs:

廣搜是從當前的位置把一次所有能到達的位置,一下標記完,加入佇列,也就是一層一層的查詢;   每次從隊首開始進行下一輪查詢並更新隊首,符合條件的點加入佇列,步數加一;直到查詢到想要的位置,結束查詢。由於廣搜是一層一層的查詢所以最先找到的一定是最短路徑而且時間比較短,基本上不會出現時間超限。自我感覺廣搜主要還是對佇列的理解;佇列如果理解透的話,廣搜只是對佇列資料的判斷。

DFS BFS搜尋 題目

這篇博主寫的是圖的深搜 圖的dfs附 圖的深度優先遍歷 出處 一條魚 2011 12 26 include include struct node 圖頂點結構定義 typedef struct node graph 圖形的結構新型態 struct node head 9 圖形頂點陣列 int vis...

DFS BFS 搜尋訓練

hdu 1016 include include include using namespace std int prime 40 vis 40 num 40 n void checkprime void dfs int i for int c 2 c n c int main return 0 p...

DFS BFS 搜尋基礎

首先深搜 先看輸入格式 5 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 第一行輸入乙個數n,接下來輸入n n的數字矩陣,0代表房間,1代表牆,每個位置都可以往上下左右四個方向走 題意非常簡單,就是求以左上角為出發點所能到達的最多的房間數。inc...