Python程式:查詢矩陣中最大島嶼的面積
假設我們有一個二進位制矩陣。其中1代表陸地,0代表水,島嶼是由相鄰的1組成的,其周長被水包圍。我們可以假設矩陣的邊緣被水包圍。我們需要找到矩陣中最大島嶼的面積。
因此,如果輸入如下所示:
| 0 | 0 | 1 | 1 | 1 | 1 | 1 |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 1 | 1 |
| 0 | 0 | 0 | 0 | 0 | 1 | 0 |
則輸出將為6。
為了解決這個問題,我們將遵循以下步驟:
- 定義一個函式dfs()。它將接收矩陣、r和c作為引數。
- total := total + 1
- matrix[r, c] := 0
- 如果 r - 1 >= 0 且 matrix[r - 1, c] 等於 1,則
- dfs(matrix, r - 1, c)
- 如果 c - 1 >= 0 且 matrix[r, c - 1] 等於 1,則
- dfs(matrix, r, c - 1)
- 如果 r + 1 < r_len 且 matrix[r + 1, c] 等於 1,則
- dfs(matrix, r + 1, c)
- 如果 c + 1 < c_len 且 matrix[r, c + 1] 等於 1,則
- dfs(matrix, r, c + 1)
- 在主方法中,執行以下操作:
- r_len := 矩陣的行數
- c_len := 矩陣的列數
- max_island := 0
- 對於範圍為 0 到 r_len - 1 的 r:
- 對於範圍為 0 到 c_len - 1 的 c:
- 如果 matrix[r, c] 等於 1,則
- total := 0
- dfs(matrix, r, c)
- max_island := max_island 和 total 之間的最大值
- 如果 matrix[r, c] 等於 1,則
- 對於範圍為 0 到 c_len - 1 的 c:
- 返回 max_island
讓我們看看下面的實現,以便更好地理解:
示例
class Solution: def solve(self, matrix): self.r_len = len(matrix) self.c_len = len(matrix[0]) max_island = 0 for r in range(self.r_len): for c in range(self.c_len): if matrix[r][c] == 1: self.total = 0 self.dfs(matrix, r, c) max_island = max(max_island, self.total) return max_island def dfs(self, matrix, r, c): self.total += 1 matrix[r][c] = 0 if r - 1 >= 0 and matrix[r - 1][c] == 1: self.dfs(matrix, r - 1, c) if c - 1 >= 0 and matrix[r][c - 1] == 1: self.dfs(matrix, r, c - 1) if r + 1 < self.r_len and matrix[r + 1][c] == 1: self.dfs(matrix, r + 1, c) if c + 1 < self.c_len and matrix[r][c + 1] == 1: self.dfs(matrix, r, c + 1) ob = Solution() matrix = [ [0, 0, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0] ] print(ob.solve(matrix))
輸入
matrix = [ [0, 0, 1, 1, 1, 1, 1], [0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 0, 0, 0], [0, 0, 0, 0, 0, 1, 1], [0, 0, 0, 0, 0, 1, 0] ]
輸出
6
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP