Ctrl K

Змейка на доске: меньше всего бросков

Средняя
Игровое поле — квадрат n × n, заданный матрицей board. Клетки пронумерованы от 1 до n² змейкой: нумерация начинается с левой нижней клетки board[n-1][0] и идёт по нижнему ряду вправо, следующий ряд вверх проходится справа налево, следующий — снова слева направо и так далее. Фишка стоит на клетке 1. За ход бросается обычный шестигранный кубик: с клетки cur фишка переходит на любую клетку с номером от cur + 1 до min(cur + 6, n²) — вы сами выбираете, что выпало. Если на клетке назначения board[r][c] не равно -1, там стоит переход (лифт вверх или горка вниз), и фишка обязана сразу переместиться на клетку с номером board[r][c]. За один ход используется не больше одного перехода: если он привёл на клетку с другим переходом, второй не срабатывает. На клетках 1 и n² переходов нет. Верните наименьшее число бросков, за которое можно добраться до клетки n², или -1, если это невозможно.
Пример 1
board=[[-1, -1, -1], [-1, -1, -1], [-1, 9, -1]] → 1

Клетки нумеруются так: нижний ряд 1, 2, 3 слева направо, средний 4, 5, 6 справа налево, верхний 7, 8, 9 слева направо. Выпадает 1 — фишка на клетке 2, с которой лифт ведёт прямо на 9. Хватает одного броска.

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

Переходов нет. С клетки 1 до 16 нужно пройти 15 клеток, а за бросок — не больше 6, значит нужно 3 броска (например, 1 → 7 → 13 → 16).

Пример 3
board=[[1, -1, -1], [1, 1, 1], [-1, 1, 1]] → -1

С клетки 1 можно попасть только на 2–7, и все они отбрасывают фишку обратно на 1. Финиш недостижим: ответ -1.

Ограничения
  • board — квадратная матрица n × n
  • 2 ≤ n ≤ 20
  • board[i][j] равно -1 или лежит в диапазоне от 1 до n²
  • На клетках с номерами 1 и n² переходов нет
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОсушение замкнутых прудов СредняяУчастки суши на карте СредняяШаги до ближайшего выхода СредняяДождь стекает в оба моря СредняяОстановится ли шарик в цели Средняя
загружаем Python…
Вход
board=[[-1, -1, -1], [-1, -1, -1], [-1, 9, -1]]
Ожидается
1

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