Ctrl K

Через опасное поле

Средняя
Робот-разведчик стоит в левом верхнем углу прямоугольного поля field и должен добраться до правого нижнего угла. Клетка со значением 1 опасна: каждый раз, когда робот на неё встаёт, он теряет 1 очко здоровья. Клетки со значением 0 безопасны. Стартовая клетка тоже считается: если она опасна, очко теряется сразу. За один шаг робот переходит в соседнюю клетку вверх, вниз, влево или вправо. В начале у него hp очков здоровья, и он выбывает, как только здоровье падает до 0. Верните True, если робот может дойти до правого нижнего угла, сохранив хотя бы 1 очко здоровья, иначе False.
Пример 1
field=[[0, 1, 1], [0, 0, 1], [1, 0, 0]], hp=1 → True

Путь вниз, вправо, вниз, вправо проходит только по безопасным клеткам, и 1 очко здоровья сохраняется до конца.

Пример 2
field=[[0, 1], [1, 0]], hp=1 → False

Любой путь проходит через одну опасную клетку, и здоровье падает до 0.

Пример 3
field=[[1, 1, 0], [0, 1, 1]], hp=4 → True

Сама стартовая клетка опасна. Например, путь вправо, вправо, вниз задевает ещё одну опасную клетку в конце: всего 3, остаётся 1 очко.

Ограничения
  • 1 ≤ len(field), len(field[0]) ≤ 50
  • в поле не меньше 2 клеток
  • каждая клетка равна 0 или 1
  • 1 ≤ hp ≤ len(field) + len(field[0])
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКратчайший путь катящегося шарика СредняяШарик и лунка СложнаяПерекрасить стрелки до выхода СложнаяСквозь стены в дальний угол СложнаяЗалы, открывающиеся по расписанию Сложная
загружаем Python…
Вход
field=[[0, 1, 1], [0, 0, 1], [1, 0, 0]], hp=1
Ожидается
True

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