深度優先搜尋 水域大小

2022-08-14 12:51:14 字數 790 閱讀 2258

問題:你有乙個用於表示一片土地的整形矩陣land,該矩陣中每個點的值代表對應地點的海拔高度。若值為0則表示水域。

由垂直、水平或對角線相連的水域為池塘。池塘的大小是指相連線的水域的個數。編寫乙個方法來計算矩陣中所有

池塘的大小,返回值需要從小到大排序。

示例:

輸入:

[ [

0, 2, 1, 0

],

[0,

1, 0, 1

], [

1, 1, 0, 1

], [

0, 1, 0, 1]]

輸出: [

1, 2, 4]

(隱藏提示1:如果給你乙個指代水的單元格的行和列,你如何找到所有相鄰的水域?)

(隱藏提示2:嘗試使用遞迴計算含水單元格的數量)

(隱藏提示3:你如何確保不會再一次訪問相同的單元格?你可以思考一下深度優先搜尋如何在圖上工作)

用c++解決如上問題:

class

solution}}

sort(res.begin(), res.end());

//對容器中已計數的count進行大小排序

return

res;

}void dfs(int x, int y, vectorint>> &land, int

count)

, dy[8] = ; //

以原點為基準的8個方向陣列

for(int i = 0; i < 8; i++)

}};

演算法練習 水域大小 深度優先

題目 你有乙個用於表示一片土地的整數矩陣land,該矩陣中每個點的值代表對應地點的海拔高度。若值為0則表示水域。由垂直 水平或對角連線的水域為池塘。池塘的大小是指相連線的水域的個數。編寫乙個方法來計算矩陣中所有池塘的大小,返回值需要從小到大排序。示例 輸入 0,2,1,0 0,1,0,1 1,1,0...

水域大小(DFS)(BFS)

dfs bfs例題 你有乙個用於表示一片土地的整數矩陣land,該矩陣中每個點的值代表對應地點的海拔高度。若值為0則表示水域。由垂直 水平或對角連線的水域為池塘。池塘的大小是指相連線的水域的個數。編寫乙個方法來計算矩陣中所有池塘的大小,返回值需要從小到大排序。示例 0 len land 1000 0...

廣度優先搜尋 深度優先搜尋

前言 這幾天複習圖論演算法,覺得bfs和dfs挺重要的,而且應用比較多,故記錄一下。廣度優先搜尋 有乙個有向圖如圖a 圖a廣度優先搜尋的策略是 從起始點開始遍歷其鄰接的節點,由此向外不斷擴散。1.假設我們以頂點0為原點進行搜尋,首先確定鄰接0的頂點集合s0 2.然後確定頂點1的集合s1 頂點2沒有鄰...