12.11 Corrigés des exercices
}
}
int val = pile . top ();
pi 1 e . pop () ;
int j = pile . top ();
pile .pop ();
int i= pile . top ();
pi 1 e . pop () ;
var [i] [j ].remet (val );
pile .pop ();
bool consistant (int i, int j, int val ) {
pile . push (-1);
/* une seule fo is la meme valeur par ligne */
for ( in t i i = 0; i i < ta i 11 e ; i i ++ )
if (ii != i)
if (!var [ii] [j ]. aff ectee ()) {
ote (ii , j, val );
}
i f ( v a r [ i i ] [ j ] . n b _ v a 1 e u r s () -- 0)
return false;
/* une seule fo is la meme valeur par colonne */
for (int jj = O; jj < taille; jj++)
if (jj != j)
if (!var [i] [jj ]. aff ectee ()) {
ote ( i , jj , val ) ;
}
i f ( var [ i ] [ j j ] . n b _va 1 eu r s () -- 0)
re turn false;
/* une seule fo is la meme valeur par carre */
int starti = tailleCarre * ( i / tailleCarre ),
startj = tailleCarre * (j / tailleCarre );
213
for (int ii = starti; ii < starti + tailleCarre; ii++)
for ( int jj = startj; jj < startj + tailleCarre; jj ++ )
if ((jj != j) &&( ii != i))
}
if (!var [ii] [jj ]. aff ectee ()) {
ote (ii , jj , val );
}
if ( var [ i i ] [ j j ] . n b _va 1 eu r s () -- 0)
return false;
return true;
bool fc () {
int i , j;
Domainelntervalle *d = choisitVariable (i , j );
if (d == NULL) return true;
Précédent

- 227/256

Suivant