Algorithme pour imprimer toutes les combinaison de lettres de la chaîne dans l'ordre lexicographique

J'ai essayé de créer le code pour générer toutes les combinaisons possibles de la chaîne dans l'ordre lexicographique:

Le code que j'ai écrit est:

void get(char *n)
 {
    int l=strlen(n); 
    sort(n,n+l);
    int k=0,m,i,j,z;

    while(k<l)
    {
        m=k;

        for(i=k;i<l;i++)
        {
            for(j=k;j<=i;j++)
                cout<<n[j];

            cout<<"\n";
        }

        for(z=m+2;z<l;z++)
            cout<<n[m]<<n[z]<<"\n";  

        k++;
    }
 }


int main() 
 {
    char n[100];
    cin>>n;
    get(n);
    return 0;
 }

Supposons que la chaîne est : abcde

Mon code n'est pas de générer des combinaisons telles que:

abd
abe

La sortie, je suis pour la chaîne abcde sont:

a 
ab
abc 
abcd 
abcde 
ac 
ad
ae 
b 
bc 
bcd 
bcde 
bd 
be 
c 
cd 
cde 
ce 
d 
de 
e

Ma sortie ne contient pas de chaînes de caractères comme : abd abe

Espère que cela rend la question claire

Comment générer tous ces combinaisons à l'aide d'un algorithme efficace

  • La sortie que vous obtenez? Il peut aider à en déduire l'erreur sans avoir à les compiler et exécuter le programme.
  • Il est l ,je suis de tri de la chaîne à trouver le lexicographiquement plus petite chaîne qui peut être obtenue par la chaîne puis de procéder
InformationsquelleAutor sac | 2015-03-15