Tester toutes les possibilites [C]
Résolu
seo610
Messages postés
705
Statut
Membre
-
seo610 Messages postés 705 Statut Membre -
seo610 Messages postés 705 Statut Membre -
Bonjour,
Comment faire un programme en C qui teste tout les possibilités d'une chaîne?
ex : abcd
et affiches les résultat.
Dans l'exemple, il y aurait 24 possibilités différente.
merci
Comment faire un programme en C qui teste tout les possibilités d'une chaîne?
ex : abcd
et affiches les résultat.
Dans l'exemple, il y aurait 24 possibilités différente.
merci
1 réponse
-
Bonjour,
Ce sont des permutations pouvez trouver du code assez facilement la dessus par exemple ici : http://bearcave.com/random_hacks/permute.html
«Alexander Bogomolyn's unordered permutation algorithm»
J'ai fait les modifications pour l'utiliser avec une chaîne :#include <stdio.h> #include <string.h> #include <stdlib.h> void print(const int *v, const int size,const char *s) { int i; if (v != 0) { for (i = 0; i < size; i++) { printf("%c",s[v[i]-1]); } printf("\n"); } } void visit(int *Value, int N, int k,const char *s) { int i; static level = -1; level = level+1; Value[k] = level; if (level == N) print(Value, N,s); else for (i = 0; i < N; i++) if (Value[i] == 0) visit(Value, N, i,s); level = level-1; Value[k] = 0; } int main(void) { const char *test="abcd"; int i,N,*Value; N=strlen(test); Value=malloc(sizeof(int)*N); for (i = 0; i < N; i++) { Value[i] = 0; } visit(Value, N, 0,test); free(Value); return 0; }