12.11 Corrigés des exe rc ices
void desaffecte () {
affectee = fa l se;
}
};
Le programme pour le problème des 8 reines s'écrit alors :
#include
#include< stdlib .h>
us ing na mespa ce s td ;
int nombre Variables;
Domainelntervalle *V ariables;
int nbReines = 8;
void initReines ();
void afficheSolution ();
bool backtrack ( int numVar = O);
/* une variable par colonne */
/* avec une valeur par case de la colonne */
void initReines () {
}
nombre Variables = nbReines;
variables = ne w Domaineln tervalle [nbReines ];
fo r (int i= O; i < nombreVariables; i++)
variables [i]. alloue (nbReines );
bool consistante (int numVar) {
in t val = variables [numVar]. valeur ();
fo r (int i = O; i < nombre Variables; i ++ )
if ( i != numVar)
if (variables [ i]. aff ectee ()) {
in t V al i = variables [i]. valeur ();
/* me me ligne */
if (V al -- V a 1 i) return fa lse;
/* me me diagona le */
if (V al + ( i
numVar) -- V a 1 i ) return
if (V al - ( i - numVar) -- val i) return
}
return tr ue;
}
void afficheSolution () {
fo r ( int i = O; i < nombre Variables; i ++ )
cout << variables [ i]. valeur () << "..., " ;
209
fa l se;
fa lse;
void desaffecte () {
affectee = fa l se;
}
};
Le programme pour le problème des 8 reines s'écrit alors :
#include
#include< stdlib .h>
us ing na mespa ce s td ;
int nombre Variables;
Domainelntervalle *V ariables;
int nbReines = 8;
void initReines ();
void afficheSolution ();
bool backtrack ( int numVar = O);
/* une variable par colonne */
/* avec une valeur par case de la colonne */
void initReines () {
}
nombre Variables = nbReines;
variables = ne w Domaineln tervalle [nbReines ];
fo r (int i= O; i < nombreVariables; i++)
variables [i]. alloue (nbReines );
bool consistante (int numVar) {
in t val = variables [numVar]. valeur ();
fo r (int i = O; i < nombre Variables; i ++ )
if ( i != numVar)
if (variables [ i]. aff ectee ()) {
in t V al i = variables [i]. valeur ();
/* me me ligne */
if (V al -- V a 1 i) return fa lse;
/* me me diagona le */
if (V al + ( i
numVar) -- V a 1 i ) return
if (V al - ( i - numVar) -- val i) return
}
return tr ue;
}
void afficheSolution () {
fo r ( int i = O; i < nombre Variables; i ++ )
cout << variables [ i]. valeur () << "..., " ;
209
fa l se;
fa lse;
