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); |
Partager