Количество различных чисел, которые может составить шахматный конь за N ходов на мобильной клавиатуре

Опубликовано: 20 Сентября, 2022

Даны целое число N и шахматный конь , помещенный в клавиатуру мобильного телефона. Задача состоит в том, чтобы подсчитать общее количество различных N цифр, которые может составить шахматный конь за N ходов. Поскольку ответ может быть очень большим, укажите значение ответа по модулю 10 9 + 7 .

Примечание: За каждый ход шахматный конь может переместиться на 2 единицы по горизонтали и на одну единицу по вертикали или на две единицы по вертикали и на одну единицу по горизонтали.

На изображении показана демонстрационная мобильная клавиатура, где «*» и «#» не считаются частью номера.

Примеры:

Input: N = 1
Output: 10
Explanation: Placing the knight over any numeric cell of the 10 cells is sufficient.

Input: N = 2
Output: 20
Explanation: All the valid number are [04, 06, 16, 18, 27, 29, 34, 38, 40, 43, 49, 60, 61, 67, 72, 76, 81, 83, 92, 94]

Подход: Идея состоит в том, чтобы найти возможные ячейки, которые могут быть достигнуты из данной ячейки для каждой ячейки, и сложить их все, чтобы найти ответ. Выполните следующие шаги, чтобы решить проблему:

  • Инициализируйте вектор v[10, 1] и temp[10] .
  • Перебрать диапазон [1, N), используя переменную i , и выполнить следующие задачи:
    • Найдите значения для всех ячеек в temp[] и затем сохраните их в векторе v[].
  • Инициализируйте переменную sum как 0 , чтобы сохранить ответ.
  • Переберите диапазон [0, 10), используя переменную i , и выполните следующие задачи:
    • Добавьте значение v[i] к переменной sum .
  • После выполнения вышеуказанных шагов выведите значение суммы в качестве ответа.

Ниже приведена реализация описанного выше подхода.


Временная сложность: O(N)
Вспомогательное пространство: O(1)