Dada uma sequência de caracteres diferentes e um número n, gere todas as combinações ordenadas com repetição, de 1 a n, usando esses caracteres.
Outra maneira de defini-lo é ver os caracteres dados como dígitos "personalizados" na base (raiz) do número de caracteres; o programa deve gerar todos os "números" com 1 a n dígitos nessa base, levando, no entanto, "zeros" também estão incluídos.
As combinações devem ser ordenadas de acordo com seu tamanho (1 caractere primeiro, depois 2 etc.), mas, além disso, elas podem estar em qualquer ordem. Você pode escolher as formas mais convenientes de lidar com entrada e saída. O menor código vence.
Exemplos:
ab, 3
-> a,b,aa,ab,ba,bb,aaa,aab,aba,baa,abb,bab,bba,bbb
0123456789, 2
->0,1,2,3,4,5,6,7,8,9,00,01,...,09,10,11,...,99