Je propose ça:
PERMUTATIONS (P, h, T, n)
01 si h=n
02 alors AFFICHER_CONTENU (P)
03 sinon
04 pour i de 1 à n
05 faire si T[i]=faux
06 alors t[i] <- vrai
07 EMPILER (P, i)
08 PERMUTATIONS (P, h+1, T, n)
09 DÉPILER (P)
10 T[i] <- faux
Au départ, le tableau T passé en paramètre doit avoir chaque case à « faux » et la pile P doit être vide.
Le résultat est contenu dans la pile P au fur et à mesure.
Cet algo travaille sur des nombres, pas sur des caractères mais c'est pas très difficile de mettre en place une correspondance...
Exemple pour afficher toutes les permutations possibles de l'ensemble {1,2,3}:
PERMUTATIONS (P, 0, T, 3)
EDIT: l'idée est d'avoir un arbre où en le parcourant en profondeur on trouve une nouvelle permutation, le tableau T permet de marquer les endroits où on est déjà passé (i.e. éviter les branches déjà faites).
Message édité par eL_Shaman___ le 26-03-2004 à 18:55:16