vereis tengo una pequeña duda a la hora de mostrar un resultado de un método basado en la técnica de backtracking(vuelta atras), el método es el siguiente:
void Elecciones(int etapa, TCand *candidato1, TCand *candidato2, int cand, TPueblo *l_pueblos,int n_dias,int n_pueblos, TPos *pos){
int votos=0;
int aux_c,i;
TPos PosDejamos;
int visit = TRUE;
if(etapa==n_dias){
if(candidato1->num_votos > candidato2->num_votos)
*pos = GANADORA;
else if(candidato1->num_votos < candidato2->num_votos)
*pos = PERDEDORA;
else
*pos = TABLAS;
}/*fin if*/
else{
*pos = PERDEDORA;
for(i=0; i<n_pueblos && *pos!=GANADORA; i++){
if(!candidato1->pueblos){/*Si no ha pasado antes por ese pueblo*/
/*Si ya ha sido visitado por el otro candidato solo nos darán un tercio
de los votos que nos darían si fuesemos los primeros*/
if(l_pueblos.visitado){
votos =(l_pueblos.votos[cand]/3);
visit = FALSE;
}
else
votos = l_pueblos.votos[cand];
/*DAMOS EL MITIN EN ESE PUEBLO*/
l_pueblos.visitado = TRUE;
candidato1->pueblos = TRUE;
candidato1->num_votos += votos;
/*Ahora le toca el turno al otro candidato*/
if(cand == 0)
aux_c = 1;
else
aux_c = 0;
Elecciones(etapa+1,candidato2,candidato1,aux_c,l_pueblos,n_dias,n_pueblos,&PosDejamos);
if(PosDejamos!=GANADORA){
if(PosDejamos == PERDEDORA) *pos = GANADORA;
else *pos = TABLAS;
}
/*DESHACER*/
if(!visit)/*Si no había sido visitado por el otro candidato*/
l_pueblos.visitado = FALSE;
candidato1->pueblos = FALSE;
candidato1->num_votos -= votos;
}
}
}
}Tengo además las siguientes estructuras:
typedef struct{
int votos[2];
int visitado;
}TPueblo;
typedef struct{
int num_votos;
int pueblos[MAX];
}TCand;
typedef enum{ PERDEDORA, GANADORA, TABLAS }TPos;En mi método main lo llamo de la siguiente forma:
Elecciones(0,&candidato1,&candidato2,0,pueblos,n_dias,n_pueblos,&pos); Mi problema es que una vez hecha la llamada cuando despues quiero mostrar los datos de candidato1 y candidato2(num_votos y pueblos[]) están a cero, siendo que lo que tienen que mostrar son los n_votos que han obtenido en el método Elecciones y los pueblos que se pusieron a TRUE en el método Elecciones. Por más vueltas que le doy no se que más hacer, si alguien me pudiese echar una mano se lo agradecería mucho, muchas gracias.