Enumération des mots d'un automate
Bonjour à tous
Alors voilà mon problème : à terme, mon algorithme devra énuméré toutes les combinaisons possibles (de longueur 1 à n) d'un mot. Par exemple pour le mot "MOT" je devrais trouver {"M", "O", "T", "MO", "MT", "OT", "MOT"}
J'ai essayé d'aborder le problème en trouvant un algo qui énumère toutes les possibilités de longueur n, ce qui se résumerait à n boucles imbriquées. Par exemple :
Code:
1 2 3 4 5 6 7
| for(i=0;i<2;i++){
for(j=0;j<2;j++){
for(k=0;k<2;k++){
printf("%d%d%d",i,j,k);
}
}
} |
Ici j'énumère toutes les combinaisons de 0 et 1 de longueur 3 : {"000","001","010","011","100","101","110","111"}.
Le problème étant que je ne sais pas à l'avance combien de boucles il va me falloir et je n'arrive pas à le transformer en forme récursive (l'affichage me pose problème).
Je ne sais même pas si je m'y prend de la bonne manière car là ma complexité va être de l'ordre de O(nombre de possibilité pour une lettre)^n
En fait c'est un automate et il faut que j'affiche tous les mots représentables.
Merci :)