Я пытаюсь реализовать алгоритм заливки, чтобы найти все доступные для моего робота ячейки в сетке.(0 означает доступность, 1 означает занятость).Мой ввод - это сетка (матрица), которую не нужно возводить в квадрат, и координаты x и y, с которых я запускаю алгоритм заливки.У меня вопрос: я пытаюсь инициализировать набор, в котором я собираю только достижимые ячейки, но по какой-то причине я получаю эту ошибку: я получаю только ячейку (0,0) в своем наборе достижимых.
и еще одна вещь, я хочу потерять отметку 2, которую я делаю, когда я заполняю, но могу ли я это сделать?Или это повредит моему алгоритму?
Вот мой код: (Он будет работать, если я уберу все строки с "достижимым", но это не то, что я хочу).
def floodfill(matrix, x, y):
reachable = set()
if matrix[x][y] == 0:
matrix[x][y] = 2
reachable.add((x, y))
if x > 0:
floodfill(matrix,x-1,y)
if x < len(matrix) - 1:
floodfill(matrix,x+1,y)
if y > 0:
floodfill(matrix,x,y-1)
if y < len(matrix[0]) - 1:
floodfill(matrix,x,y+1)
return reachable