Определите последовательность длины prepend-append,n
которая будет перестановкой чисел, 1, 2, ..., n
которые могут быть сгенерированы следующей процедурой:
Начните с номера
1
.Для каждого числа от
2
доn
поместите этот номер в начало или конец последовательности (либо добавьте, либо добавьте его, отсюда и название последовательности).
Например, это допустимый способ генерации последовательности prepend-append длиной 4:
1
21 [beginning]
213 [end]
2134 [end]
Ваша задача состоит в том, чтобы создать программу или функцию, которая будет принимать число n
от как 3
до 30
входного, и печатать или возвращать все последовательности prepend-append длины 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
. Можем ли мы просто вывести списки чисел?