#define _BACKTRACKING_H_
#include "persona.h"
+#include "hashtable.h"
#include "susanita.h"
#include "parser.h"
#include <map>
#include <deque>
#include <string>
-
-#ifdef __VC++__
-/* find_if está en <algorithm> en VC++ */
#include <algorithm>
-#endif
+#include <cassert>
struct BackTracking : Susanita
{
private:
- /* Llamada recursiva: Ensaya una alternativa con el N-ésimo hombre */
+ /// Llamada recursiva: Ensaya una alternativa con el N-ésimo hombre
void Ensayar(personas_type::iterator iH);
- /* Determina si la pareja es estable */
+ /// Determina si la pareja es estable
bool ParejaEstable(personas_type::iterator Mujer, personas_type::iterator Hombre);
+
+ /// Guarda el resultado cuando llega a resolver el BT, para no perderlo
+ /// en el unwind
+ void GuardarResultado();
+
+ /// Recupera el resultado para poder imprimirlo bien cuando termina.
+ void RecuperarResultado();
+
+ /// Tabla de hash para guardar los resultados
+ HashTable< Persona* > resultado;
};
#endif /* _BACKTRACKING_H_ */