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 :
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 ;
            }
    }
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

pouvez vous m'eclairer a ce sujet !