Generar subsecuencias

Tengo una cadena como "0189", para la cual necesito generar todas las subsecuencias, pero se debe mantener el orden de los caracteres individuales, es decir, aquí 9 no debe venir antes de 0, 1 o 8. Ej: 0, 018, 01 , 09, 0189, 18, 19, 019, etc.

Otro ejemplo es "10292" para el cual las subsecuencias serían: 1, 10, 02, 02, 09, 29, 92, etc. Como habrás notado '02' dos veces, ya que '2' aparece dos veces en la cadena dada. Pero nuevamente, cosas como: 21, 01, 91 no son válidas ya que el orden debe mantenerse.

¡Cualquier algoritmo o código psuedo, que podría implementarse en C / C ++, sería apreciado!

Respuestas a la pregunta(4)

Su respuesta a la pregunta