기입재귀 - 홍수 나는 그들이에있는 객실 등의 기준에 따라 물을 다른 색상으로 동굴의 특정 세포를 채우는 큰 코드에서 사용할 수 홍수 채우기 알고리즘을 작성해야 알고리즘
어떤 이유로. 내 재귀 알고리즘이 작동하지 않고 계속 최대 재귀 수준을 초과한다는 사실을 계속해서 알려줍니다. 이유는 없습니다.
저는 셀 단위로 이동하려고합니다. 공기, 석재 또는 물인지 확인하고, 돌이나 물이라면 아무 것도하지 않기를 원합니다. AIR 인 경우 해당 셀을 채우기를 원합니다.
아무도 내게 조언이나 조언을 줄 수 있습니까? fill
루틴의 시작
#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 : 정확한 * fast * flood fill 알고리즘을 구현하는 것이 다소 어렵지 않습니까? – krlmlr
행과 열은 부호가 있거나 부호가 있습니까? –