用 Python 编写程序,查找矩阵中最大岛屿的面积
pythonserver side programmingprogramming
假设我们有一个二进制矩阵。这里 1 代表陆地,0 代表水,岛屿是一组相邻的 1,其周边被水包围。我们可以假设矩阵的边缘被水包围。我们必须找到矩阵中最大岛屿的面积。
因此,如果输入如下
| 0 | 0 | 1 | 1 | 1 | 1 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 | 0 | |
| 0 | 0 | 1 | 1 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 0 | 0 | 0 | 1 |
则输出为 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
- 对于 r 在 0 到 r_len - 1 范围内,执行
- 对于 c 在 0 到 c_len - 1 范围内,执行
- 如果 matrix[r, c] 等于 1,则
- total := 0
- dfs(matrix, r, c)
- max_island := max_island 的最大值,总计
- 如果 matrix[r, c] 等于 1,则
- 对于 c 在 0 到 c_len - 1 范围内,执行
- 返回 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
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

