3

我需要编写一个洪水填充算法以用于更大的代码,该代码根据它们所在的房间用不同颜色的水填充洞穴的特定单元。

出于某种原因,我的递归算法不起作用并一直告诉我我超过了最大递归深度,我不知道为什么。

我试图逐个单元格地检查它是空气、石头还是水,如果是石头还是水,我希望它什么也不做。如果是 AIR,我希望它填充该单元格。

谁能给我一些提示或建议?

#flood fill algorithm
def fill(cave, row, col, color):

    caveWidth = len(cave)
    caveHeigth = len(cave[0])


    if row > 0:
        fill(cave, row-1, col, color) #left
    if col > 0:
        fill(cave, row, col-1, color) #up
    if row < caveWidth-1:
        fill(cave, row+1, col, color) #right
    if col < caveHeigth-1:
        fill(cave, row, col+1, color) #down

    if cave[row][col] == STONE or cave[row][col] == WATER:
        return

    if cave[row][col] == AIR : 
        cave[row][col] = WATER
        grid.fill_cell(row, col, color)
4

2 回答 2

5

打印rowcolfill例程开始时查看这里有什么问题。一些代码重新排序,你很好:-)

于 2012-10-19T02:53:19.793 回答
1

不要使用递归算法,它们是魔鬼的玩物。

维基百科列出了各种实用算法,如扫描线填充。

于 2012-10-19T20:02:30.967 回答