Réponse acceptée !
// Fonction qui fait la permutation
void Permutation(int n)
{
int i;
// déclare un tbl d'entier de taille n
int* tbl;
tbl=(int*)malloc(sizeof(int)*n);
// Remplit
for(i=0; i<n; i++)
tbl[i]=0;
// Fait les permutations
while(tbl[0]<n)
{
// Avance le dernier nombre
tbl[n-1]++;
// Vérifie les valeurs obtenu
for(i=n-1; i>=1; i--)
if(tbl[i]==n)
{
tbl[i]=tbl[i]%n;
tbl[i-1]++;
}
//
// Il y a permutation si chaque nombre est unique et si l'on a pas fait toute les permutations
if( Unicite(tbl, n) && tbl[0]<n)
{
// Affiche tous les éléments
for(i=0; i<n; i++)
printf("%d ", tbl[i]);
printf("\n");
}/**/
}
free(tbl);
}
// Fonction qui détermine l'unicité de chaque nombre
char Unicite(int* tbl, int n)
{
int i, j;
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
if(i!=j)
if(tbl[i]==tbl[j])
return 0;
}
return 1;
}
int main(int argc, char *argv[])
{
Permutation(6);
system("PAUSE");
return 0;
}
Ca marche... c pas optimisé mais ça tu peux le faire toi même... Bon courage


Stéph
