给定一个二维数组,数组只包含1和0,1表示岛屿,0表示海洋,求每个海洋与最近的岛屿的距离,怎么用Python实战呢?
时间: 2023-03-09 11:50:40 浏览: 91
可以使用广度优先搜索算法来解决这个问题。首先,遍历二维数组,找到所有岛屿,并将其标记为访问过。然后,对于每个未访问的海洋格子,从该格子开始进行广度优先搜索,直到找到最近的岛屿,则搜索结束,此时可以计算出当前海洋格子与最近的岛屿的距离。使用 Python 实现上述算法,可以使用队列来存储和搜索相邻的海洋格子,并使用一个标记数组来记录每个格子的距离。
相关问题
给定一个二维数组 打印二维数组每列最小的值
以下是Python中打印二维数组每列最小值的代码示例:
```python
# 定义一个二维数组
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
# 使用zip函数将二维数组转置,然后遍历每一列找到最小值
for col in zip(*matrix):
print(min(col))
```
代码解释:
1. 首先定义一个二维数组matrix,其中包含4行3列的数据。
2. 使用zip函数将二维数组转置,得到一个包含3行4列的新数组,其中每一行对应原数组的一列。
3. 遍历新数组的每一列,使用min函数找到该列的最小值,并打印输出。
编写一个函数,使给定的一个二维数组转置
以下是一个示例函数,可以将给定的二维数组进行转置:
```python
def transpose(matrix):
"""
将给定的二维数组进行转置
"""
# 获取矩阵的行数和列数
rows = len(matrix)
cols = len(matrix[])
# 创建一个新的二维数组,用于存储转置后的矩阵
transposed = [[ for j in range(rows)] for i in range(cols)]
# 遍历原矩阵,将每个元素放到新矩阵对应的位置上
for i in range(rows):
for j in range(cols):
transposed[j][i] = matrix[i][j]
# 返回转置后的矩阵
return transposed
```
该函数接受一个二维数组作为参数,返回转置后的二维数组。具体实现过程如下:
1. 获取原矩阵的行数和列数;
2. 创建一个新的二维数组,用于存储转置后的矩阵;
3. 遍历原矩阵,将每个元素放到新矩阵对应的位置上;
4. 返回转置后的矩阵。
例如,对于以下二维数组:
```python
matrix = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
```
调用 `transpose(matrix)` 函数后,将返回以下转置后的二维数组:
```python
[[1, 4, 7],
[2, 5, 8],
[3, 6, 9]]
```