Dado um número inteiro positivo gere todos os desarranjos de objetos.
Detalhes
- Um desarranjo é uma permutação sem ponto fixo. (Isto significa que em cada número de desarranjo não podem estar no entrada -ésimo).
- A saída deve consistir em desarranjos dos números (ou alternativamente ).
- Como alternativa, você sempre pode imprimir alterações de (ou respectivamente), mas é necessário especificar isso.
- A saída deve ser determinística, ou seja, sempre que o programa for chamado com algum dado como entrada, a saída deve ser a mesma (o que inclui que a ordem dos desarranjos deve permanecer a mesma) e a saída completa deve ser feita dentro de uma quantidade finita de tempo todas as vezes (não é suficiente fazê-lo com probabilidade 1).
- Você pode assumir que
- Para um dado você pode gerar todos os desarranjos ou, alternativamente, pegar outro número inteiro que serve como índice e imprimir o -ésimo desarranjo (na ordem que você escolheu).
Exemplos
Observe que a ordem dos desarranjos não precisa ser a mesma listada aqui:
n=2: (2,1)
n=3: (2,3,1),(3,1,2)
n=4: (2,1,4,3),(2,3,4,1),(2,4,1,3), (3,1,4,2),(3,4,1,2),(3,4,2,1), (4,1,2,3),(4,3,1,2),(4,3,2,1)
OEIS A000166 conta o número de desarranjos.