virgil
By: a guest | Mar 16th, 2010 | Syntax:
C++ | Size: 0.99 KB | Hits: 47 | Expires: Never
Etat * courant = new Etat ( L->getorigX()-1, L->getorigY()-1 ) ;
while ( ! liste_ouv.empty() ) {
liste_ouv.push_back ( courant ) ;
successeurs = courant->generer_fils ( L ) ;
if ( courant->est_sorti ( L ) ) {
return liste_ferm ;
}
for ( itS = successeurs.begin() ; itS != successeurs.end() ; itS ++ ) {
if ( ! ( est_dans_liste ( *itS, liste_ferm ) ) ) {
if ( est_dans_liste ( *itS, liste_ouv ) ) {
h = (*itS).getH() ; // recupere l'ancien cout
(*itS).setH ( L ) ; // calcule le nouveau cout
if ( h < (*itS).getH() ) {
(*itS).setH ( h ) ;
}
}
else {
(*itS).setH() ;
liste_ouv.push_back ( *itS ) ;
}
}
}
courant = meilleur_noeud ( liste_ouv ) ;
liste_ferm.push_back ( courant ) ;
effacer ( courant, liste_ouv ) ;
}