Tester toutes les possibilites [C]

Résolu
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
A voir également:

1 réponse

Hxyp Messages postés 401 Date d'inscription   Statut Membre Dernière intervention   54
 
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;
  }
0
seo610 Messages postés 705 Statut Membre 102
 
parfait, merci
0