Gere subseqüências

Eu tenho uma string como "0189", para a qual eu preciso gerar todas as subsequências, mas a ordenação dos caracteres individuais deve ser mantida, ou seja, aqui 9 não deve vir antes de 0, 1 ou 8. Ex: 0, 018, 01 , 09, 0189, 18, 19, 019, etc.

Outro exemplo é "10292" para quais subseqüências seriam: 1, 10, 02, 02, 09, 29, 92, etc. Como você deve ter notado '02' duas vezes, já que '2' vem duas vezes na string dada. Mas, novamente, coisas como: 21, 01, 91 são inválidas, pois a ordem deve ser mantida.

Qualquer algoritmo ou código psuedo, que poderia ser implementado em C / C ++, seria apreciado!

questionAnswers(4)

yourAnswerToTheQuestion