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![]()
Partager