Programación en lenguaje C, elige uno de tres, deshazte de 360 puntos (recompensa 100, 260 adicionales), ahorra antes de la tarde del 1 de julio y ¡será válido!
¿ver copia simple en el portapapeles?
#include lt;stdio.hgt
#include lt;stdlib.hgt; #define MAXNUM 100/* El número máximo de elementos en la pila*/
#define N 11 MAXNUM 100/* El número máximo de elementos en la pila*/
#define N 11 /* La longitud de la primera dimensión del mapa*/ ¿ver copia simple en el portapapeles?
#include lt; stdio.hgt;
#include lt;
#include lt; stdlib.p>
#define MAXNUM 100/* Número máximo de elementos en la pila*/
#define N 11 /* Longitud de la primera dimensión del mapa* /
typedef struct {
int x;/* fila subíndice*/
int y;/* columna subíndice */
int d; /* Dirección del movimiento */
}DataType;
struct SeqStack { /* Definición del tipo de pila secuencial */
int t; / * Indica la ubicación superior de la pila */
DataType s[MAXNUM]
}
typedef struct SeqStack *; PSeqStack; /* Tipo de puntero al tipo de pila secuencial */
PSeqStack pastack; /* pastack es una variable de puntero que apunta a la pila secuencial */
PSeqStack createEmptyStack_seq ( void ) {
PSeqStack pastack;
pastack = (PSeqStack)malloc(sizeof(struct SeqStack));
if (pastack == NULL)
printf("¡Sin espacio! !! \n");
else
pastack-gt; t = -1;
devolver pastack;
}
int isEmptyStack_seq( PSeqStack pastack ) {
return pastack-gt == -1
}
/* Devuelve el elemento x empujar a la pila*/
void push_seq( PSeqStack pastack, DataType x) {
if( pastack-gt;t gt;= MAXNUM - 1)
printf( "Desbordamiento
Pruebe cada dirección*/
g = i dirección[k][0]; h = j dirección[k][1].
if (g == x2 amp ;amp ; h == y2 amp;amp; maze[g][h] == 0) { /* Ir al punto de salida*/
printpath(st /* Imprimir ruta*/ p); >
return;
}
if (laberinto[ g][h] == 0) { /* Ir al punto no recorrido*/
laberinto[g][h] = 2; /* marcar*/
pushtostack(st, i, j, k /* apilar*/
i = g); ; j = h; k = -1; /* Convertir el siguiente punto al punto actual*/
}
}
}
}
printf("\nLa ruta no ha sido encontrada.\n"); /*La pila devuelve la ruta no encontrada*/
}
}
int main(){
int dirección[][2]={0, 1, 1, 0, 0, -1, -1
};
int x1, x2, y1, y2;
printf("/n¿de dónde? (fila y disposición)"); printf("/nentrada de línea y arreglo(linegt;1, arreglogt;1):"
scanf("dd",amp;x1,amp;y1); printf("/n¿dónde terminar?(línea y organizar)");
printf("/ningresar línea y organizar? organizar(linelt;=6, organizarlt;=9):"); p> p>
scanf("d d",amp;x2,amp;y2);
laberinto(laberinto,dirección,x1,y1,x2,y2); > devolver 0;
}
typedef struct {
int x;/* subíndice de fila*/
int y;/* subíndice de columna*/
int d; /* Dirección de movimiento*/
}DataType;
struct SeqStack { /* Definición de tipo de pila secuencial */ p>
int t;* Indica la ubicación de la parte superior de la pila */
DataType s[MAXNUM]
}; typedef struct SeqStack *PSeqStack /* Tipo de puntero del tipo de pila secuencial */
PSeqStack pastack;
PSeqStack createEmptyStack_seq( void ) {
PSeqStack pastack;
pastack = (PSeqStack)malloc(sizeof(struct SeqStack));
if (pastack == NULL)
printf("¡¡¡Sin espacio. !!! \n")! !!! \n");
else
pastack-gt; t = -1;
devolver pastack;
}
int isEmptyStack_seq( PSeqStack pastack ) {
return pastack-gt; t == -1
}
/* Will El elemento x se empuja a la pila*/
void push_seq( PSeqStack pastack, DataType x) {
if( pastack-gt;t gt;= MAXNUM - 1)
printf( "¡Desbordamiento!\n" );
else {
pastack-gt;t;
pastack-gt;s[pastack; -gt ;t] = x;
}
}
/* Eliminar el elemento superior de la pila*/
void pop_seq( PSeqStack pastack ) {
if (pastack-gt; t == -1 )
printf( "Underflow!\n"
else);
pastack-gt;t--;
}
/* Cuando la pila señalada por pastack no es una pila vacía, encuentre el valor de elemento superior de la pila*/
DataType top_seq( PSeqStack pastack ) {
return (pastack-gt; s[pastack-gt. t]); >}
void pushtostack( PSeqStack st, int x, int y, int d) {
elemento DataType; p>
elemento.y = y;
elemento.d = d;
push_seq(st, elemento);
void printpath(PSeqStack st) {
p>
Elemento tipo de datos
printf("\n\nLa ruta es:\n"); >
mientras(! isEmptyStack_seq(st)) {
elemento = top_seq(st);
pop_seq(st);
printf("/nel nodo está: alineado \ n", element.x, element.y); /* Imprime cada punto del camino */
}
}
}
}
/* Laberinto [M][N] El camino desde el laberinto de entrada [x1][y1] hasta el laberinto de salida [x2][y2]*/ p>
/* donde 1lt;=x1,x2lt;=M-2,1lt;=y1,y2lt;=N-2 */
void mazePath(int laberinto[][N] , int dirección[][2], int x1, int y1, int x2, int y2) {
int i, j, k, g, h
PSeqStack st;
p>
Elemento DataType;
st = createEmptyStack_seq( );
laberinto[x1][y1] = 2 /* A partir del; punto de entrada, márquelo */
pushtostack(st, x1, y1, -1 /* Punto de entrada a la pila*/
while (! y;
); for (k = element.d 1 ; k lt; = 3; k ) { /* Pruebe cada dirección por turno*/
g = i dirección[k][0]; k][1].
p>if (g == x2 amp; amp; h == y2 amp; amp; maze[g][h] == 0) { /* Ir a salida punto*/
printpath(st); /* imprimir ruta*/
return
}
if (laberinto[ g ][h] == 0) { / * Al punto no recorrido*/
laberinto[g][h] = 2; /* Marca*/
pushtostack(st, i, j, k); / * Ir a la pila*/
i = g; j = h = -1 /* Convertir el siguiente punto al punto actual*/
}
}
}
}
printf("\nLa ruta no ha sido encontrada.\n"); *La pila devuelve la ruta que no se ha encontrado*/
}
}
int main(){
int dirección [][2]={0, 1, 1, 0, 0, -1, -1
}
int x1, x2, y1, y2; >
printf("/nde dónde?(línea y organizar)");
printf("/nentrada de línea y organizar(linegt;1, organizargt;1):"); >
scanf("d d",amp;x1 , amp; y1);
printf("/n¿dónde terminar? (línea y organización)"); ("/ningresar línea y organizar? organizar(linelt;= 6, organizarlt;=9): "
scanf("d d",amp;x2,amp;y2
);rutadellaberinto(laberinto,dirección,x1,y1, x2, y2);
devuelve 0;
}