廣度優先搜尋一般使用佇列實現
對於需要計算樹高度(層數):可通過先計算佇列內元素個數,每次迴圈完一波計算過個數的元素,層數加一計算。
典型例題:
有乙份大小為 n x n 的『地圖』(網格) grid,上面的每個『區域』(單元格)都用 0 和 1 標記好了。其中 0 代表海洋,1 代表陸地,你知道距離陸地區域最遠的海洋區域是是哪乙個嗎?請返回該海洋區域到離它最近的陸地區域的距離。
我們這裡說的距離是『曼哈頓距離』( manhattan distance):(x0, y0) 和 (x1, y1) 這兩個區域之間的距離是 |x0 - x1| + |y0 - y1| 。
解法:
import numpy as np
class solution:
def maxdistance(self, grid: list[list[int]]) -> int:
gridlen=len(grid)
queue=
for i in range(gridlen):
for j in range(gridlen):
if grid[i][j]==1:
if queue== or len(queue)==gridlen*gridlen:
return -1
deepth=-1
while queue:
deepth+=1
n=len(queue)
for z in range(n):
i,j=queue.pop(0)
for x,y in [(i-1,j),(i+1,j),(i,j-1),(i,j+1)]:
if x>=0 and x=0 and yif grid[x][y]==0:
grid[x][y]=2
return deepth
BFS廣度優先搜尋
廣度優先搜尋,利用佇列實現,結束標誌是隊列為空的時候 承接dfs的演算法實現的講例,對於迷宮問題我們也可以採取廣度優先搜尋實現 include iostream include cstdio include cstdlib using namespace std int map 55 55 int ...
bfs廣度優先搜尋
這一課我們來學習圖的另一種遍歷方法 廣度優先搜尋 breadth first search,簡稱 bfs 這是一種連通圖的常用遍歷策略,通常用於求起點到各點的最短路徑,以及求兩點之間的最優路徑等問題。首先我們先來看看廣度優先搜尋的具體方法吧 對於乙個連通圖,我們假設一開始所有頂點均未被訪問,廣度優先...
廣度優先搜尋bfs
bfs即廣度優先搜尋演算法,其是搜尋演算法中的一種。1.dfs常用於尋找是否存在解 其從a節點出發,選取乙個臨近點b,然後不斷深入,在搜尋完b的下屬節點 ehif 後,回到a再搜尋臨近a的c節點,以此類推。2.bfs則用於在最短的時間或最少的移動距離內找到解 其往往從a節點出發,搜尋周圍所有的圍繞節...