BFS與DFS常見演算法總結

2021-09-27 23:45:37 字數 1143 閱讀 4465

關於bfs於dfs一般用於在圖論中來遍歷圖(樹是乙個特殊的圖),最難的就在於我們常常不知道這是乙個可以用bfs、dfs來解決的乙個問題,因為通常題目都表達得很隱晦,需要我們取轉化取構建乙個圖,難度較大。同時可能也需要結合stack與queue這兩種資料結構來解決問題,或者能用bfs、dfs解決的問題有時候其實是可以用動態規劃來解決的。

題目中有最短路,最小步數什麼的關鍵字也要考慮bfs、dfs的可能性(因為他們常常與圖論中的最短路徑結合)

一、bfs

279. perfect squares

given a positive integer n, find the least number of perfect square numbers (for example,1, 4, 9, 16, ...) which sum to n.

example 1:

input:n =12output:3explanation:12 = 4 + 4 + 4.
動態規劃解決**如下:

dp[0] = 0 

dp[1] = dp[0]+1 = 1

dp[2] = dp[1]+1 = 2

dp[3] = dp[2]+1 = 3

dp[4] = min

= min

= 1

dp[5] = min

= min

= 2...

dp[13] = min

= min

= 2...

dp[n] = min, n - i*i >=0 && i >= 1

class solution

dp[i] = min;

} return dp[n];

}}

bfs解決**如下:

class solution 

if(v > n)

if(!visited.contains(v)) }}

}return depth;

}}

二、dfs

BFS與DFS演算法

dfs總結 首先,我們先了解一下bfs,bfs又稱廣度優先搜尋,一般都是用於解決一些圖,樹的遍歷問題。其實廣度優先搜尋就類似與二叉樹的層序遍歷過程,需要借助c 中stl裡面的queue佇列容器來實現這個過程。它其實就是一種分層查詢的過程,每次向前走一步,都會去訪問一批可以訪問的節點,不會存在dfs裡...

演算法 DFS與BFS

一 dfs 深度優先搜尋 dfs 深度優先遍歷dfs與樹的先序遍歷比較類似。假設初始狀態是圖中所有頂點均未被訪問,則從某個頂點v出發,首先訪問該頂點然後依次訪問它的所有鄰接結點,每次訪問乙個鄰接結點時,以該鄰接結點為根結點繼續進行dfs,直到結點的所有鄰接結點以及其鄰接結點的鄰接結點都被訪問完,才訪...

演算法(九) DFS與BFS演算法

優秀的模板 很棒的總結 具體講解可以參考 啊哈!演算法 題2045 題目描述 在乙個55的地圖上,存在著障礙物和平地。在這個地圖中,小x想要找到回家的路。地圖上,你可以每次上下左右行走一步。他希望他回家所走的是最短路,請問,他所走的路徑中,最短路的方案數。輸入共5行,每行是乙個字串。表示空地,表示障...