Pila: Problema con las ratas del laberinto, hay algún problema con el programa, ¡por favor ayuda!
#stdio.hgt;
#includelt ;stdlib.hgt;
#define N 50
int **laberinto;
int fila;
int col ;
int col; p>
int stack[50];//pila donde se almacenan las rutas
void CreateMaze()//se usa para crear dinámicamente un laberinto p>
{
int i, j;
printf("Ingrese el número de filas en el laberinto. ");
Ingrese el número de filas en el laberinto: ");
scanf("d", & fila);
printf("Ingrese el número de columnas del laberinto: ");
scanf("d", amp; col);
if(rowlt;=0||collt;=0)
{
printf("¡Las filas o columnas de entrada no se ajustan a la regla!\n");
exit(1);
}
/ / Utilice punteros para crear dinámicamente matrices bidimensionales
maze=(int **)malloc((row 2)*sizeof(int *)); ;ilt;fila 2;i)
{
laberinto[i]=(int *)malloc((col 2)*sizeof(int));
}
// Agregar pared lateral
for(i=0;ilt;row 2;i)
{
laberinto[i][ 0]=1;
laberinto[i][col 1]=1;
}
for(i=0; ilt ; col 2; i )
{
if(i==1)
{
laberinto[0][i] =0;
}
p>
else laberinto[0][i]=1;
if(i==col) p>
{
laberinto[fila 1] [col]=0;
}
otro laberinto[fila 1][i]=1 ;
}
for( i=1; ilt; =fila; i )
{
for(j=1; jlt; =col; j )
{
printf("Ingrese el d dígito de la d-ésima fila:\n",i,j);
scanf("d",amp;laberinto[i][j]);
p>}
}
/// Ingrese al siguiente laberinto y agregue paredes laterales al laberinto actual para verificar si la entrada es correcta
printf(" Entrada completada. El laberinto actual con paredes laterales es:\n");
for(i=0; ilt; fila 2; i )
{
for (j=0;jlt;col 2;j)
{
printf("d", laberinto[i][j]);
}
printf("/n");
}
}
void ShowMaze()//Laberinto de salida p>
{
int i,j;
for(i=1;ilt;=row;i)
{
for(j=1;jlt;=col;j)
{
printf("d", laberinto[i][j]);
}
printf("\n");
}
}
}
Implemente la pista inversa en la dirección para encontrar la ruta de solución del laberinto
int FindPath()
{
int i, j, k, count, x , y, dirección;
cuenta=0;
x=1, y=1
dirección=0; =0, k=0 ;
for(i=0;ilt;N;i)
{
pila[i]=0; p>
}
i=0;
mientras(1)
{
count=0;
if( x==1amp;amp;y==1)
laberinto[x][y]=2;
if(laberinto[x][y 1]==0) //este
{
cuenta;
laberinto[x][y 1]=2;
y=y 1;
pila[i]=-1;
i
if(x==filaamp;y==col; )
return 1;
}
else if(laberinto[x 1][y]==0)//Sur
{
if(laberinto[x 1][y]==0)
cuenta ;
{
laberinto[x 1][y]= 2;
x=x 1;
pila[i]=-2;
i;
if(x== filaamp;amp;y==col)
return 1;
}
}
si no (laberinto[x][ y-1]==0)//oeste
{
cuenta;
if(laberinto[x][y- 1]==0)
{
laberinto[x][y-1]=2
y=y-1;
pila[i ]=-3;
i
if(x==fila;amp;y==col)
devuelve 1 ;
}
}
si no(laberinto[
x-1][y]==0)//norte
{
cuenta;
if(laberinto[x-1][y]= =0)
{
laberinto[x- 1][y]=2;
x=x-1;
pila[i]=-4;
i;
if(x==rowamp;amp;y==col)
devuelve 1; p>
p>
}
}
}
si(count==0)
{
if(ilt; 0)
return 0;
dirección=pila[i--];
cambiar(dirección)
{
caso -1: y=y- 1; ruptura;
caso-2: x=x-1;
caso-3: y=y 1; romper
caso-4: x=x 1;
}
}
}
int main()
{
CreateMaze();
if(FindPath())
{
printf("Se ha encontrado una ruta de la siguiente manera:\n"); p>
ShowMaze ();
}
else
{
printf("No hay un camino adecuado para salir de ¡el laberinto actual!\ n");
}
DestroyMaze();
}