momsse
Messages postés8Date d'inscriptionsamedi 7 août 2004StatutMembreDernière intervention 8 mars 2008
-
6 mars 2008 à 22:01
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009
-
15 mai 2009 à 14:14
Salut à tous,
Presque tout est dans le titre, je n'arrive pas à comprendre cette algorthme en regardant les sources suivantes (qui fonctionnent parfaitement en passant) ...
J'aimerai beaucoup que l'on m'explique le principe de l'algo, j'ai besoin de le comprendre pour essayer de le coder plus clairement si cela est possible, je vous remercie d'avance !!
...................................
#include <stdio.h>
#define NB_VAL 3
int array[NB_VAL] = { 0 };
int num = 0;
void display()
{
int i;
for ( i = 0; i < NB_VAL; ++i )
printf( "%d ", array[i] );
printf("\n" );
}
void permutation( int index )
{
int i;
array[++index] = ++num;
if ( num == NB_VAL ) display();
for ( i = 0; i < NB_VAL; ++i )
if ( !array[i] )
permutation( i-1 );
array[index] = 0;
--num;
}
int main()
{
int i;
for ( i = -1; i < NB_VAL-1; ++i )
permutation( i );
}
momsse
Messages postés8Date d'inscriptionsamedi 7 août 2004StatutMembreDernière intervention 8 mars 2008 6 mars 2008 à 22:03
Salut à tous,
Presque tout est dans le titre, je n'arrive pas à comprendre cette algorthme en regardant les sources suivantes (qui fonctionnent parfaitement en passant) ...
J'aimerai beaucoup que l'on m'explique le principe de l'algo, j'ai besoin de le comprendre pour essayer de le coder plus clairement si cela est possible, je vous remercie d'avance !!
#include <stdio.h>
#define NB_VAL 3
int array[NB_VAL] = { 0 };
int num = 0;
void display()
{
int i;
for ( i = 0; i < NB_VAL; ++i )
printf( "%d ", array[i] );
printf("\n" );
}
void permutation( int index )
{
int i;
array[++index] = ++num;
if ( num == NB_VAL ) display();
for ( i = 0; i < NB_VAL; ++i )
if ( !array[i] )
permutation( i-1 );
array[index] = 0;
--num;
}
int main()
{
int i;
for ( i = -1; i < NB_VAL-1; ++i )
permutation( i );
}
valneandre
Messages postés35Date d'inscriptionmardi 7 novembre 2006StatutMembreDernière intervention18 septembre 2009 15 mai 2009 à 14:14
Peut-être un peu tard, parce que la discussion date d'un an, mais, à tout hasard: cet algorithme fonctionne parce qu'il s'agit d'une fonction récursive (qui se mord la queue, qui s'appelle elle-même). La fonction s'appelle "permutation", et à l'intérieur d'elle-même, elle fait appel à "permutation()".
Pour comprendre la notion de récursivité, se poser la question:
Que sont mes ancêtres ?
Réponse: mon père, et ses ancêtres !