Ускорение поиска по сетке на глубинуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Ускорение поиска по сетке на глубину

Сообщение Anonymous »

Сейчас я работаю над кодом 994. Гниющие апельсины. Где описание дано следующим образом:

Вам дана сетка m x n, где каждая ячейка может иметь одно из трех значений; 0 представляет собой пустую ячейку, 1 — свежий фрукт, 2 — гнилой фрукт. Каждую минуту любой свежий апельсин, примыкающий к гнилому апельсину в четырех направлениях, становится гнилым. Возвращает минимальное количество минут, которое должно пройти до тех пор, пока ни в одной ячейке не появится свежий апельсин. Если это невозможно, верните -1.

Моя идея довольно проста. Рассмотрим каждую точку сетки. Если Grid[j] == 1, мы используем поиск в глубину, чтобы определить, сколько времени потребуется, чтобы испортиться. Затем мы просто возвращаем наибольшее такое значение.

Код: Выделить всё

maxTime = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
time = dfs(i,j)
if time == -1:
return -1
else:
maxTime = max(maxTime, time)
return maxTime
Где мой алгоритм dfs реализован следующим образом. Учитывая некоторую координату i,j, мы проверяем вверх, вниз, влево и вправо. Если один из них тоже фрукт, повторяем, пока не встретим гнилой фрукт.

Код: Выделить всё

def dfs(i,j):
directions = [(1,0), (-1,0), (0,1), (0,-1)]
q = collections.deque([(i,j,0)])
while q:
x,y,step = q.popleft()
for i_step, j_step in directions:
i_new = x + i_step
j_new = y + j_step

if (0

Подробнее здесь: [url]https://stackoverflow.com/questions/79355915/speedup-depth-first-search-in-a-grid[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Ускорение поиска по сетке на глубину
    Anonymous » » в форуме Python
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Получить глубину на нерекурсивном обходчике по дереву в глубину?
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Получить глубину на нерекурсивном обходчике по дереву в глубину?
    Anonymous » » в форуме Python
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Логическая рекурсивная функция поиска в глубину
    Anonymous » » в форуме Python
    0 Ответы
    46 Просмотры
    Последнее сообщение Anonymous
  • Ускорение поиска самой длинной непрерывной последовательности/серии значений
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»