Está aqui um algoritmo para permutações com recolocação. Eu modifiquei o código de:
http://en.wikipedia.org/wiki/ItoaIsto ferve para baixo a um problema da raiz. Se você tem um jogo {a, b, c, d, e} e 3 entalhes, a seguir você tem números da raiz 5^3: aaa, aab, aac, DAA, aae, aba,…. Para começ todos os resultados originais possíveis, você pode ter a + operador de modo que a+1 --> b
…
e+1 --> a com carreg de modo que, por exemplo:
abe + 1 --> ACA
A saída é:
Número do elemento # da raiz
1 00
2 10
3 20
4 01
5 11
6 21
7 02
8 12
9 22