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, если это невозможно.board=[[-1, -1, -1], [-1, -1, -1], [-1, 9, -1]] → 1
Клетки нумеруются так: нижний ряд 1, 2, 3 слева направо, средний 4, 5, 6 справа налево, верхний 7, 8, 9 слева направо. Выпадает 1 — фишка на клетке 2, с которой лифт ведёт прямо на 9. Хватает одного броска.
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).
board=[[1, -1, -1], [1, 1, 1], [-1, 1, 1]] → -1
С клетки 1 можно попасть только на 2–7, и все они отбрасывают фишку обратно на 1. Финиш недостижим: ответ -1.
board — квадратная матрица n × nboard[i][j] равно -1 или лежит в диапазоне от 1 до n²board=[[-1, -1, -1], [-1, -1, -1], [-1, 9, -1]]
1
«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 55 тестов на сервере, включая скрытые.