212
Problè mes de satisfaction de contraintes
enumereValeurs ( i, j, val );
for (int k = O; k < nb_vals; k++ ) {
var [i) [j ]. aff ecte (val [k ]);
if (consistant (i , j, val [k]))
if ( backtrack ())
return true;
var [ i] [j ]. des aff ecte ();
}
return fals e;
}
void afficheSolution () {
}
for (int i = O; i < taille; i++) {
}
for (int j = O; j < taille; j++ )
if (var [i] [j ]. aff ectee ())
cout << var [i] [j ]. valeur () <<
el se
cout <<
cout << end!;
Il .
int main (int argc , char **argv) {
init ();
}
if ( backtrack ())
aff icheSolution ();
12.11.4 Le Forward Checking
Il
Il .
�
'
On reprend le programme de Backtrack pour le Sudoku et on ajo ute ou remplace les
fonctions suivantes :
#include
stack pile;
void ote (int i, int j, int val ) {
}
if (var [i] [j ]. ote (val )) {
pile . push ( i ) ;
pile . push (j );
pile . push (val );
}
void remet () {
white (pile . top () != -1) {
Précédent

- 226/256

Suivant