给出栅栏填充算法代码,将填充的所有点用数组保存起来
时间: 2024-11-15 18:28:59 浏览: 7
栅栏填充算法的具体实现会依赖于使用的编程语言,这里提供一个简单的Python版本,使用了邻接矩阵来存储填充后的结果:
```python
def fence_fill(image, start_x, start_y):
# 初始化二维数组记录填充状态,False表示未填充,True表示已填充
filled = [[False] * len(image[0]) for _ in range(len(image))]
def is_valid(x, y):
return 0 <= x < len(image) and 0 <= y < len(image[0]) and image[y][x] == 0
def fill(x, y):
if not is_valid(x, y): return
filled[y][x] = True
fill(x + 1, y) # 向右
fill(x - 1, y) # 向左
fill(x, y + 1) # 向下
fill(x, y - 1) # 向上
fill(start_x, start_y)
# 创建一个列表保存填充过的坐标
filled_points = [(i, j) for i in range(len(image)) for j in range(len(image[0])) if filled[i][j]]
return filled_points
# 使用示例
image = [[0, 0, 1, 0], [0, 0, 1, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
start_x, start_y = 0, 1
filled_points = fence_fill(image, start_x, start_y)
print("Filled points:", filled_points)
```
上述代码首先初始化了一个二维数组`filled`来跟踪填充情况。然后定义了两个辅助函数:`is_valid`判断是否在图像范围内且像素值为0,`fill`函数负责实际的填充操作。最后,遍历填充过的全部像素并将其坐标添加到`filled_points`列表中。
阅读全文