salut tout le monde
j essaye de mettre en place un algoritme qui pourrait me donner toutes les combinaisons possibles de ses elements (doublons de lettre egalement. ex : AA,BB)
je disposed'un algo recursif qui me permet de permuter les valeurs mais le probleme c'est que je voudrai integrer le fait qu'il stock chaque ensemble de combinaison creer dans un tableau et je ne vois pas comment m'y prendre et qu'il puisse gerer le fait qu'il puiise y avoir des doublons(etant pas tres doué avec le recursif)
pour le moment le programme se contente d'afficher les lettres une part une
voici l'algo en question :
ps : en simple test j'ai essayer de numéroter chaque ensemble de combinaison et je me retrouve avec des ensembles ayant le meme numero
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 #include <stdio.h> #include <stdlib.h> void permutation( char* e, int nb, int rang) ; int main( int argc, char** argv ) { int nb ; /* Le nombre d'entier à permuter */ char entree[3]={'A','B','C'} ; /* Le tableau qui contiendra les nombres */ int i; printf( "Nb d'entier : " ) ; fflush(stdin) ; fflush( stdout ) ; scanf( "%d", &nb ) ; permutation( entree, nb, 0) ; return 0 ; } void permutation(char* e, int nb, int rang) { int i, j ; if ( rang == nb-1 ) /* Le zone à permutter ne contient qu'un élément */ { char* sep = "" ; for( i=0; i<nb; i++ ) { printf( "%s%c", sep, e[i]) ; sep = ", " ; } printf( "\n" ) ; } else for( i=rang; i<nb; i++ ) { int prem ; permutation( e, nb, rang+1) ; /* on fait tourner les éléments de la zone à permutter */ prem = e[rang] ; for( j=rang+1; j<nb; j++ ) e[j-1] = e[j] ; e[nb-1] = prem ; } }
pouvez vous m'eclairer a ce sujet !
Partager