Defina uma sequência de comprimento de pré-acréscimo-acréscimon
para ser uma permutação dos números 1, 2, ..., n
que podem ser gerados pelo seguinte procedimento:
Comece com o número
1
.Para cada número a partir
2
den
, colocar este número para o início ou no final da sequência (quer preceder ou acrescentar que, daí o nome da sequência).
Por exemplo, esta é uma maneira válida de gerar uma sequência de pré-acréscimo-acréscimo de comprimento 4:
1
21 [beginning]
213 [end]
2134 [end]
Sua tarefa é criar um programa ou função que levará um número n
de 3
para 30
como entrada e imprimir ou retornar todas as sequências de comprimento de pré-apêndice a fim n
em ordem lexicográfica (se você estiver produzindo seqüências de caracteres e não listas, os números acima de 9 serão representados como letras a-u
, para preservar o comprimento da string). Por exemplo, é esse pedido para n = 4
:
1234 [RRR]
2134 [LRR]
3124 [RLR]
3214 [LLR]
4123 [RRL]
4213 [LRL]
4312 [RLL]
4321 [LLL]
Em geral, existem 2 permutações de comprimento pré-anexado n-1n
.
Você não pode usar nenhuma função de classificação interna no seu idioma no seu código. O programa mais curto para fazer isso em qualquer idioma vence.
a-u
. Podemos apenas produzir listas de números?