Bonjour,

Je dois obtenir l'ensemble des combinaisons réalisable avec trois valeurs différentes dans un triangle de longueur K.
Par exemple pour K=2, je dois obtenir 27 solutions comme:
00
0

01
0

12
1

...

Pour cela, je dois utiliser un backtrack mais le code ci-dessous ne marche pas. En effet, il y a des redondances et certains triangles ne s'affichent pas.
Pourriez-vous me donner quelques explications?


Le code:
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
 
int niveau [K][K][K];
int compt = 0;
 
 
void back_track_base (int i){            //appel 1er back_track ligne = 0
    int j, l, m;
 
    if (i == K){                                //Si la ligne = nb lignes
       for (l=0; l<K; l++) {              //Afficher les solutions
           printf("\n");
           for(m=K-l; m>0; m--) {
            printf("%i ",niveau[l][m][K]);
            }
        }
        printf("\n");
 
        compt ++;
 
    }else{                          //Sinon pour chaque colonnes
        for(j=K-i-1; j>=0; j--){
                niveau[i][j][K] = 0;        //SI ROUGE = 0 ==> MARCHE
                back_track_base (i+1);
                niveau[i][j][K] = 1;        //DONC BLEU = 1
                back_track_base (i+1);
                niveau[i][j][K] = 2;        //ET VERT = 2
                back_track_base (i+1);
        }    
    }
}
 
 
 
// Dans le main:
back_track_base(0);
printf("Il ya %i solutions \n",compt);


Merci d'avance