Hola , me gustaria que me ayudaseis con un programa que tengo hecho, basicamente es un solucionador(sencillo) de laberintos, que funciona perfectamente, mientras haya un solo camino que llegue a la meta y no haya bifurcaciones que lleven a caminos cerrados..Aqui esta el algoritmo que uso, mediante recursividad, lo unico que me hace falta es usar lo que he visto en internet "backtracking", para regresar a una casilla donde pueda irse para otro camino...cosa en la que estoy bastante perdido. Muchisimas gracias de antemano
Código:
//MARCA = '*'El laberinto esta formado por espacios(32) y #, la meta es @(64)
i=x1;
j=y1;
listo=FALSE;
do
{
if(i==x2 && j==y2) listo=TRUE;
if(i!=x2 && j!=y2) lab[i][j]=MARCA;
if(listo==FALSE &&(lab[i][j+1]==32||lab[i][j+1]==64)) //Mov a derecha
{
j=j+1;
if(i==x2 && j==y2) listo=TRUE;
else
{
lab[i][j]=MARCA;
}
}
if(listo==FALSE &&(lab[i+1][j]==32||lab[i+1][j]==64)) //Mov a abajo
{
i=i+1;
if(i==x2 && j==y2) listo=TRUE;
else
{
lab[i][j]=MARCA;
}
}
if(listo==FALSE &&(lab[i][j-1]==32||lab[i][j-1]==64)) //Mov izquierda
{
j=j-1;
if(i==x2 && j==y2) listo=TRUE;
else
{
lab[i][j]=MARCA;
}
}
if(listo==FALSE &&(lab[i-1][j]==32||lab[i-1][j]==64)) //Mov arriba
{
i=i-1;
if(i==x2 && j==y2) listo=TRUE;
else
{
lab[i][j]=MARCA;//marco la posicion con *
}
}
}while(listo!=TRUE);