С учетом клавиатуры телефона, как показано ниже:
1 2 3
4 5 6
7 8 9
0
Сколько различных десятизначных чисел может быть сформировано начиная с 1? Ограничение состоит в том, что движение от 1 цифры до следующего похоже на движение Рыцаря в шахматной игре.
Например, если мы находимся в 1, то следующая цифра может быть либо 6, либо 8 если мы находимся в точке 6, то следующая цифра может быть 1, 7 или 0.
Допускается повторение цифр - 1616161616 - допустимое число.
Существует ли полиномиальный алгоритм времени, который решает эту проблему? Задача требует, чтобы мы просто указали количество десятизначных чисел и не обязательно перечисляли числа.
EDIT: Я пробовал моделировать это как график с каждой цифрой, имеющей 2 или 3 цифры в качестве своих соседей. Затем я использовал DFS для навигации до глубины 10 узлов, а затем увеличивал количество чисел каждый раз, когда я достигал глубины 10. Это, очевидно, не полиномиальное время. Предполагая, что у каждой цифры было всего 2 соседа, для этого потребовалось бы не менее 2 ^ 10 итераций.
Здесь переменная - это количество цифр. Я взял, например. 10 цифр. Он также может быть n-цифрами.