Ctrl K

Прогулки только в гору

Сложная
Дана карта высот — прямоугольная матрица heights. За один шаг можно перейти в соседнюю клетку сверху, снизу, слева или справа, причём только если она **строго выше** текущей. Прогулка может начинаться в любой клетке и заканчиваться в любой; прогулка из одной клетки тоже считается. Две прогулки различны, если различаются последовательности посещённых клеток. Верните количество различных прогулок по модулю 10⁹ + 7.
Пример 1
heights=[[1, 2], [2, 3]] → 10

Четыре прогулки из одной клетки, четыре из двух клеток (из 1 в каждую из двоек и из каждой двойки в 3) и две из трёх: 1 → 2 → 3 через любую из двоек. Итого 10.

Пример 2
heights=[[5, 5, 5]] → 3

Соседние клетки равны, шагать строго вверх некуда — остаются три прогулки из одной клетки.

Пример 3
heights=[[3, 2, 1]] → 6
Ограничения
  • 1 ≤ len(heights), len(heights[0]) ≤ 1000
  • len(heights) · len(heights[0]) ≤ 10⁵
  • 1 ≤ heights[i][j] ≤ 10⁵
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамый длинный подъём по карте СложнаяМышь, кот и сыр СложнаяПорядок букв по словарю СложнаяШарик и лунка СложнаяПятнашки на шесть клеток Сложная
загружаем Python…
Вход
heights=[[1, 2], [2, 3]]
Ожидается
10

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