📅  最后修改于: 2023-12-03 15:10:44.614000             🧑  作者: Mango
这是一个Python程序,用于查找给定的地图中有多少个岛屿。该程序使用深度优先搜索(DFS)算法实现。在这个算法中,程序从一个起始点开始遍历整个地图,将所有相邻的陆地标记为已访问,并将它们添加到一个以访问点为元素的列表中。当所有与起始点相邻的陆地都被访问后,程序会从列表中取出下一个未访问的点,继续遍历。当列表为空时,程序就停止了。当一个岛屿全部被访问完成后,程序将计数器加1,继续查找下一个岛屿。
以下是程序的代码片段:
def num_islands(grid):
def dfs(grid, r, c):
if 0 <= r < len(grid) and 0 <= c < len(grid[0]) and grid[r][c] == '1':
grid[r][c] = '0'
dfs(grid, r - 1, c)
dfs(grid, r + 1, c)
dfs(grid, r, c - 1)
dfs(grid, r, c + 1)
if not grid:
return 0
num_islands = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == '1':
num_islands += 1
dfs(grid, i, j)
return num_islands
上面的代码定义了一个函数 num_islands
,其参数为一个二维字符数组 grid
。函数中定义了一个辅助函数 dfs
,用于实现深度优先搜索算法。在主函数中,程序首先检查 grid
是否为空,如果为空则直接返回 0。接下来,程序初始化计数器 num_islands
为 0。然后,程序遍历整个地图,对于每个岛屿,递归调用 dfs
函数,将所有与该岛屿相邻的陆地标记为已访问。当岛屿全部被访问完成后,程序将计数器加1,并继续查找下一个岛屿。最终,程序返回岛屿的数量。
注意,上面的程序假设 grid
是一个合法的二维字符数组,其中只包含字符 '0' 和 '1'。如果输入的地图不符合要求,则程序可能会抛出异常,或者返回错误的结果。为了避免这种情况,程序员应该先对输入数据进行验证,确保它们符合规范。