我需要寫一洪水填充算法的基礎上,他們是在哪個房間填充不同顏色的水溶洞的特定細胞更大的代碼中使用遞歸 - 洪水填充算法
出於某種原因。我的遞歸算法不起作用,並一直告訴我我超過了最大遞歸深度,我不知道爲什麼。
我試圖通過細胞去細胞,檢測是否是空氣,石,或水,如果是石頭或水,我希望它什麼都不做。如果它是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)
這真的是最好的迭代完成,而不是遞歸。它會更快,更有效 – jozefg
@jozefg:實現正確的*快速*洪水填充算法難嗎? – krlmlr
行和列有符號還是無符號? –