#python #python-3.x #infinite-loop #depth-first-search
#python #python-3.x #бесконечный цикл #поиск в глубину
Вопрос:
Я пытаюсь реализовать dfs в матрице, но внутри моего цикла while в случаях, когда цель недостижима, цикл никогда не существует. Есть идеи, как с этим справиться? Некоторые указатели для кода: RowCol и RowNum имеют индексы достижимых соседей (т.е. Вправо, вниз, по правой диагонали вниз) Я добавляю это к индексам текущего узла, чтобы получить индексы соседей. Если он не посещен или является препятствием (равным 1), добавьте его в стек и повторите.
while stack:
curr = stack.get() # Dequeue the front cell
path.append(curr.pt)
# If we have reached the destination cell,
# we are done
pt = curr.pt
if pt == goal:
print("Sequence : ")
print(path)
print("Path : ")
print(curr.path " to " str(pt))
return curr.dist
# Otherwise enqueue its adjacent cells
for i in range(3):
if i == 0 or i == 1:
cost = 2
elif i == 2:
cost = 3
row = pt[0] rowNum[i]
col = pt[1] colNum[i]
# if adjacent cell is valid, has path
# and not visited yet, enqueue it.
if isValid(row, col):
if matrix[row][col] == "0" and not visited[row][col]:
visited[row][col] = True
Adjcell = queueNode([row, col], curr.dist cost,curr.path " to " str(curr.pt))
stack.put(Adjcell)
# Return -1 if destination cannot be reached
print(matrix[start[0]][start[1]])
print(matrix[goal[0]][goal[1]])
print("Can't reach goal")
return -1
Комментарии:
1. Покажите свой код для ответа.
2. Что должен делать ваш код, когда вы дойдете до конца строки? И да, мы не можем помочь вам с кодом, который вы не показываете.
3. Извините, чувак, только что отредактировал
Ответ №1:
Если вы хотите использовать цикл
while True :
Комментарии:
1. братан, я пытаюсь выйти из цикла, он уже работает бесконечно