廣度優先遍歷
leetcode 打卡題 很有意思的一道題 這道題讓我學會了廣度優先遍歷
對於格仔點來說 它的廣度就是它周圍的四個點,用乙個for迴圈就能搞定了。
思路
先掃一邊陣列 將壞橘子加入到佇列中,再開乙個二維陣列用來存放有沒有被感染的標記。
這裡放兩張圖來便於理解,左邊是原陣列,右邊是標記陣列 可以很清楚的看到感染的波數
;//初始化為0;
int dir_x[4]
=;//定義座標系
int dir_y[4]
=;queue
int,
int>
> q;
//定義乙個佇列 用來存壞橘子的
for(
int i=
0;i)for
(int j=
0;j) dis[i]
[j]=-1
;//掃瞄出腐爛橘子的位置
for(
int i=
0;i}while
(!q.
empty()
)}return
(cnt>0)
?-1:level;
}
BFS廣度優先遍歷
樹的層序遍歷即為bfs的應用。實質就是利用乙個佇列將頂點v的鄰接點儲存,因樹的結構比較特殊,所以不需要進行設定flag訪問位,但圖的情況比較複雜,一般需要對每個結點是否被訪問進行標記。利用bfs可以很容易的利用層數求出最短的步數,比如二叉樹利用層序遍歷求樹的高度,但深搜一般也可以實現。廣度優先搜尋能...
BFS廣度優先搜尋遍歷
廣度優先搜尋遍歷 problem description 給定乙個無向連通圖,頂點編號從0到n 1,用廣度優先搜尋 bfs 遍歷,輸出從某個頂點出發的遍歷序列。同乙個結點的同層鄰接點,節點編號小的優先遍歷 input 輸入第一行為整數n 0 n 100 表示資料的組數。對於每組資料,第一行是三個整數...
廣度優先搜尋 BFS遍歷
廣度優先搜尋 breadth first search bfs 是乙個分層搜尋的過程,沒有回退過程,是非遞迴的。為避免重複訪問,需要乙個狀態陣列visited n 來儲存各頂點的訪問狀態。為實現逐層訪問,bfs演算法在實現時需要乙個佇列,以記憶正在訪問的這一層和上一層的頂點,以便於向下一層訪問。例題...