Ctrl K

Подрезать кусты по росту

Сложная
Садовник подрезает кусты на участке, заданном матрицей garden размером m × n: - 0 — клетка непроходима (пруд, грядка); - 1 — свободная клетка, по ней можно ходить; - число больше 1 — клетка с кустом, по ней тоже можно ходить; число — высота куста. За один шаг садовник переходит в соседнюю клетку вверх, вниз, влево или вправо. Стоя на клетке с кустом, он может его подрезать — после этого клетка становится 1. Кусты нужно подрезать строго по возрастанию высоты, начиная с самого низкого; проходить мимо куста, не подрезая его, можно. Садовник начинает в клетке (0, 0). Верните наименьшее число шагов, за которое он подрежет все кусты, или -1, если до какого-то куста не добраться. Если кустов нет, ответ 0.
Пример 1
garden=[[1, 4, 1], [0, 0, 2], [3, 1, 1]] → 11

Сначала куст высотой 2: путь (0,0) → (0,1) → (0,2) → (1,2), 3 шага. Затем куст 3 в (2,0): (1,2) → (2,2) → (2,1) → (2,0), ещё 3 шага. Последний куст 4 в (0,1): обратно до (1,2) 3 шага и ещё 2 — итого 3 + 3 + 5 = 11.

Пример 2
garden=[[5, 1], [0, 0], [2, 3]] → -1

Кусты 2 и 3 отрезаны непроходимым рядом, до них не дойти.

Пример 3
garden=[[2, 1, 3]] → 2

Куст 2 стоит на стартовой клетке — его подрезаем сразу, без шагов. Затем 2 шага до куста 3.

Ограничения
  • 1 ≤ m, n ≤ 50
  • 0 ≤ garden[i][j] ≤ 10⁹
  • Высоты всех кустов различны
  • garden[0][0] ≠ 0
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЛужи на рельефной карте СложнаяШарик и лунка СложнаяПереправа в прилив СложнаяЯщик на складе СложнаяПерекрасить стрелки до выхода Сложная
загружаем Python…
Вход
garden=[[1, 4, 1], [0, 0, 2], [3, 1, 1]]
Ожидается
11

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 99 тестов на сервере, включая скрытые.