Визначте послідовність доповнення, що додається, довжиною, n
щоб бути перестановкою чисел, 1, 2, ..., n
які можуть бути згенеровані наступною процедурою:
Почніть з числа
1
.Для кожного номера від
2
доn
, помістити це число на початку або в кінці послідовності (або Prepend або на додавання його, звідси і назва послідовності).
Наприклад, це правильний спосіб генерування послідовності додавання додавання довжиною 4:
1
21 [beginning]
213 [end]
2134 [end]
Ваше завдання - створити програму або функцію, яка буде приймати число n
від 3
до 30
введення, та роздрукувати або повернути всі послідовності перед додаванням додавання довжини n
в лексикографічному порядку (якщо ви виводите рядки, а не списки, цифри вище 9 будуть представлені як літери a-u
, щоб зберегти довжину рядка). Наприклад, це такий порядок для n = 4
:
1234 [RRR]
2134 [LRR]
3124 [RLR]
3214 [LLR]
4123 [RRL]
4213 [LRL]
4312 [RLL]
4321 [LLL]
Загалом, існує 2 n-1 перестановки, додані до перестановки довжини n
.
Ви не можете використовувати будь-які вбудовані функції сортування на вашій мові у своєму коді. Виграє найкоротша програма для виконання будь-якої мови.
a-u
. Чи можемо ми просто вивести списки чисел?