elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda optimizacion busqueda de salida en laberinto
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda optimizacion busqueda de salida en laberinto  (Leído 4,218 veces)
erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Ayuda optimizacion busqueda de salida en laberinto
« en: 28 Marzo 2014, 02:40 am »

Hola, aqui les traigo un problema que estoy haciendo sobre, dado un laberinto de 12 x 12 usar la regla de la mano derecha para conseguir la salida del laberinto e indicar si hay salida o no, como tal el programa corre y si encuentra la salida, pero no se si lo esta haciendo de la mejor manera, he aqui el codigo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>     // Para usar funcion de limpiar pantalla
  3. #include <windows.h>    // Para usar funcion de hacer pausa
  4. #define TAM_FIL 12
  5. #define TAM_COL 12
  6.  
  7. using namespace std;
  8.  
  9. typedef struct
  10. {
  11.    int estaEnInicio, estaEnFinal; //----- Para saber cuantas veces nuestro objeto ha estado en el inicio y si esta en el final
  12.    char simbolo;
  13.    int pos_x; //------------------------- Coordenada del objeto en X
  14.    int pos_y; //------------------------- Coordenada del objeto en Y
  15. }Objeto;
  16.  
  17. typedef struct
  18. {
  19.    // ----------------------------------- Simplemente para saber las coordenadas de los puntos X e Y de inicio y fin del laberinto ------------------------------------
  20.  
  21.    int ini_fil;
  22.    int ini_col;
  23.    int fin_fil;
  24.    int fin_col;
  25. }InformacionMapa;
  26.  
  27. void mostrarEstadoMapa( char laberinto[][TAM_COL] );
  28. void recorrerLaberinto( char laberinto[][TAM_COL], InformacionMapa *punto, Objeto *obj );
  29.  
  30. int main( int argc, char* args[] )
  31. {
  32.  
  33.    int cont_fil, cont_col;
  34.  
  35.    InformacionMapa mapa;
  36.    mapa.ini_fil = 2;
  37.    mapa.ini_col = 0;
  38.    mapa.fin_fil = 4;
  39.    mapa.fin_col = 11;
  40.  
  41.    Objeto obj;
  42.    obj.simbolo = 'X';
  43.    obj.estaEnInicio = 0;
  44.    obj.estaEnFinal = 0;
  45.    obj.pos_x = 2;
  46.    obj.pos_y = 0;
  47.  
  48.    char laberinto[TAM_FIL][TAM_COL] = { '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#',
  49.                                         '#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', ' ', ' ', '#',
  50.                                         ' ', ' ', '#', ' ', '#', ' ', '#', '#', '#', '#', ' ', '#',
  51.                                         '#', '#', '#', ' ', '#', ' ', ' ', ' ', ' ', '#', ' ', '#',
  52.                                         '#', ' ', ' ', ' ', ' ', '#', '#', '#', ' ', ' ', ' ', ' ',
  53.                                         '#', '#', '#', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
  54.                                         '#', ' ', ' ', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
  55.                                         '#', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
  56.                                         '#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#', ' ', '#',
  57.                                         '#', '#', '#', '#', '#', '#', ' ', '#', '#', '#', ' ', '#',
  58.                                         '#', ' ', ' ', ' ', ' ', ' ', ' ', '#', ' ', ' ', ' ', '#',
  59.                                         '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#'
  60.                                       };
  61.  
  62.    recorrerLaberinto( laberinto, &mapa, &obj );
  63.  
  64.    getchar();
  65. return 0;
  66. }
  67.  
  68. void mostrarEstadoMapa( char laberinto[][TAM_COL] )
  69. {
  70.    int cont_fil, cont_col;
  71.  
  72.    system("cls");
  73.    for( cont_fil = 0; cont_fil < TAM_FIL; cont_fil++ )
  74.    {
  75.        for( cont_col = 0; cont_col < TAM_COL; cont_col++ )
  76.        {
  77.            printf("%c", laberinto[cont_fil][cont_col]);
  78.            printf("  ");
  79.        }
  80.  
  81.        printf("\n\n");
  82.    }
  83.    Sleep(500);
  84. }
  85.  
  86. void recorrerLaberinto( char laberinto[][TAM_COL], InformacionMapa *mapa, Objeto *obj )
  87. {
  88.  
  89.    if( obj->pos_x == mapa->ini_fil && obj->pos_y == mapa->ini_col )
  90.        obj->estaEnInicio++;
  91.    else if( obj->pos_x == mapa->fin_fil && obj->pos_y == mapa->fin_col )
  92.        obj->estaEnFinal++;
  93.  
  94.    while( laberinto[4][11] != obj->simbolo && obj->estaEnInicio == 1 && !obj->estaEnFinal )
  95.    {
  96.        laberinto[obj->pos_x][obj->pos_y] = obj->simbolo;
  97.  
  98.        mostrarEstadoMapa( laberinto );
  99.  
  100.        if( laberinto[obj->pos_x][obj->pos_y + 1] != '#' && laberinto[obj->pos_x][obj->pos_y + 1] != obj->simbolo )
  101.        {
  102.            obj->pos_y++;
  103.            recorrerLaberinto( laberinto, mapa, obj );
  104.        }
  105.        else if( laberinto[obj->pos_x + 1][obj->pos_y] != '#' && laberinto[obj->pos_x + 1][obj->pos_y] != obj->simbolo )
  106.        {
  107.            obj->pos_x++;
  108.            recorrerLaberinto( laberinto, mapa, obj );
  109.        }
  110.        else if( laberinto[obj->pos_x - 1][obj->pos_y] != '#' && laberinto[obj->pos_x - 1][obj->pos_y] != obj->simbolo )
  111.        {
  112.            obj->pos_x--;
  113.            recorrerLaberinto( laberinto, mapa, obj );
  114.        }
  115.        else if( laberinto[obj->pos_x][obj->pos_y - 1] != '#' && laberinto[obj->pos_x][obj->pos_y - 1] != obj->simbolo )
  116.        {
  117.            obj->pos_y--;
  118.            recorrerLaberinto( laberinto, mapa, obj );
  119.        }
  120.        else if( laberinto[obj->pos_x][obj->pos_y - 1] != '#' )
  121.        {
  122.            obj->pos_y--;
  123.            recorrerLaberinto( laberinto, mapa, obj );
  124.        }
  125.        else if( laberinto[obj->pos_x - 1][obj->pos_y] != '#' )
  126.        {
  127.            obj->pos_x--;
  128.            recorrerLaberinto( laberinto, mapa, obj );
  129.        }
  130.        else if( laberinto[obj->pos_x + 1][obj->pos_y] != '#' )
  131.        {
  132.            obj->pos_x++;
  133.            recorrerLaberinto( laberinto, mapa, obj );
  134.        }
  135.        else if( laberinto[obj->pos_x][obj->pos_y + 1] != '#' )
  136.        {
  137.            obj->pos_y++;
  138.            recorrerLaberinto( laberinto, mapa, obj );
  139.        }
  140.  
  141.    }
  142.  
  143.    if( obj->estaEnInicio > 1 )
  144.        printf("\n\n\nNo hay salida en este laberinto.");
  145.    if( obj->estaEnFinal )
  146.        printf("\n\n\nFinal del laberinto encontrado");
  147. }
  148.  

Disculpen el exceso de if-else xD, debo mejorar esa parte.

Nota: Aun no lo he probado con un laberinto distinto con punto de partida y fin distintos.



He probado quitandole la salida y alli si que no hace la busqueda por todas las posibles rutas del laberinto, aunque se que esto seria un problema de backtracking, yo no soy muy experto cuando se trata de recursividad jeje


« Última modificación: 28 Marzo 2014, 03:00 am por Eternal Idol » En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #1 en: 28 Marzo 2014, 09:05 am »

Código
  1. using namespace std;
  2.  
  3. typedef struct
  4. {
  5.    int estaEnInicio, estaEnFinal; //----- Para saber cuantas veces nuestro objeto ha estado en el inicio y si esta en el final
  6.    char simbolo;
  7.    int pos_x; //------------------------- Coordenada del objeto en X
  8.    int pos_y; //------------------------- Coordenada del objeto en Y
  9. }Objeto;

C++ y C en el mismo código ??? Entiendo que al final te has decantado por C porque no hay includes de C++, en tal caso deberías quitar el using namespace.

Si quieres usar C++ has de saber que el typedef no es necesario en este caso, las estructuras en C++ se usan igual que las clases ( es decir, sin poner el struct ) y sin necesidad de typedefs.

Otra cosa, la función recorrerLaberinto es un poco infernal, no?? usas recurrencia y un while a la vez... hay que tener bastante cuidado con esas cosas porque se puede pasar de vueltas la función. Sinceramente no creo que sea necesario para este caso que la función sea recursiva. Con un while ( !salida_encontrada ) { codigo } puedes resolver el ejercicio.

El problema de la recurrencia es que para determinados laberintos te puedes encontrar con que el número de pasos necesarios para salir desde una posición determinada sea superior al tamaño de la pila... en cuyo caso vas a tener un casque.

Otra cosilla. En el siguiente código:

Código
  1. if( laberinto[obj->pos_x][obj->pos_y + 1] != '#' && laberinto[obj->pos_x][obj->pos_y + 1] != obj->simbolo )

Se supone que "simbolo" es el caracter que representa tu posición actual, no? en ese caso... ¿Cómo es posible que puedas estar en obj->pos_y y en obj->pos_y+1 a la vez?

Y para terminar:

Código
  1.    if( obj->estaEnInicio > 1 )
  2.        printf("\n\n\nNo hay salida en este laberinto.");

No creo que esta sea el chequeo correcto. Habría que tener en cuenta también la dirección en la que te estás moviendo... tu ponte que inicias el algoritmo en un cruce de caminos y se dirige primero hacia un pasillo cerrado... al volver a pasar por el cruce dirás, erroneamente, que no tiene salida.


En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #2 en: 28 Marzo 2014, 14:36 pm »

El using namespace std; si fue un descuido se me habia olvidado borrar esa linea, solo que cuando intente modificar el post cuando le daba previsualizar me mostraba algunos caracteres raros y lo deje asi y bueno estaba intentando resolverlo con recursividad, la linea

Código
  1. if( laberinto[obj->pos_x][obj->pos_y + 1] != '#' && laberinto[obj->pos_x][obj->pos_y + 1] != obj->simbolo )

Simplemente la use para saber si cuando el objeto se mueva a la posicion siguiente no haya obstaculo '#' o no esté ya su simbolo (indicando que ya paso por alli), pero como dije, los problemas de recursividad me cuestan pensarlos.
En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #3 en: 28 Marzo 2014, 18:20 pm »

Simplemente la use para saber si cuando el objeto se mueva a la posicion siguiente no haya obstaculo '#' o no esté ya su simbolo (indicando que ya paso por alli), pero como dije, los problemas de recursividad me cuestan pensarlos.

Pero te das cuenta de que así impides que tu algoritmo pueda dar la vuelta tras meterse por el pasillo equivocado, no?

Código:
0123456789
##########
      XXX#
##########

Si tu algoritmo empieza en la posición 6 y tira hacia la derecha... llega a 8 y jaque mate, no tiene salida... a no ser que pueda dar la vuelta.
En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #4 en: 28 Marzo 2014, 20:01 pm »

Viendo ejemplos de códigos recursivos logre modificar mi programa ( hice que la función retornara valores, y modifique los if ), ahora el programa si busca caminos alternativos, pero aun asi existen caminos que no recorre, en el caso de mi laberinto, si a la posicion que deberia ser la salida lo hago un obstaculo, al programa le quedarían 2 caminos por verificar

Coloco todo el codigo de nuevo porque hice algun cambio en main

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>     // Para usar funcion de limpiar pantalla
  3. #include <windows.h>    // Para usar funcion de hacer pausa
  4. #define TAM_FIL 12
  5. #define TAM_COL 12
  6.  
  7. typedef struct
  8. {
  9.    int estaEnFinal; //------------------- Para saber si llego al final el objeto
  10.    char simbolo;
  11.    int pos_x; //------------------------- Coordenada del objeto en X
  12.    int pos_y; //------------------------- Coordenada del objeto en Y
  13. }Objeto;
  14.  
  15. typedef struct
  16. {
  17.    // ----------------------------------- Simplemente para saber las coordenadas de los puntos X e Y de inicio y fin del laberinto ------------------------------------
  18.  
  19.    int ini_fil;
  20.    int ini_col;
  21.    int fin_fil;
  22.    int fin_col;
  23. }InformacionMapa;
  24.  
  25. void mostrarEstadoMapa( char laberinto[][TAM_COL] );
  26. int recorrerLaberinto( char laberinto[][TAM_COL], InformacionMapa *punto, Objeto obj );
  27.  
  28. int main( int argc, char* args[] )
  29. {
  30.  
  31.  
  32.    InformacionMapa mapa;
  33.    mapa.ini_fil = 2;
  34.    mapa.ini_col = 0;
  35.    mapa.fin_fil = 4;
  36.    mapa.fin_col = 11;
  37.  
  38.    Objeto obj;
  39.    obj.simbolo = 'X';
  40.    obj.estaEnFinal = 0;
  41.    obj.pos_x = 2;
  42.    obj.pos_y = 0;
  43.  
  44.    char laberinto[TAM_FIL][TAM_COL] = { '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#',
  45.                                         '#', ' ', ' ', ' ', '#', ' ', ' ', ' ', ' ', ' ', ' ', '#',
  46.                                         ' ', ' ', '#', ' ', '#', ' ', '#', '#', '#', '#', ' ', '#',
  47.                                         '#', '#', '#', ' ', '#', ' ', ' ', ' ', ' ', '#', ' ', '#',
  48.                                         '#', ' ', ' ', ' ', ' ', '#', '#', '#', ' ', ' ', ' ', ' ',
  49.                                         '#', '#', '#', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
  50.                                         '#', ' ', ' ', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
  51.                                         '#', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#', ' ', '#',
  52.                                         '#', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', '#', ' ', '#',
  53.                                         '#', '#', '#', '#', '#', '#', ' ', '#', '#', '#', ' ', '#',
  54.                                         '#', ' ', ' ', ' ', ' ', ' ', ' ', '#', ' ', ' ', ' ', '#',
  55.                                         '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#', '#'
  56.                                       };
  57.  
  58.    if( recorrerLaberinto( laberinto, &mapa, obj ) == 1 )
  59.        printf("\n\n\nFinal del laberinto encontrado");
  60.    else
  61.        printf("\n\n\nNo hay salida en este laberinto.");
  62.  
  63.    getchar();
  64. return 0;
  65. }
  66.  
  67. void mostrarEstadoMapa( char laberinto[][TAM_COL] )
  68. {
  69.    int cont_fil, cont_col;
  70.  
  71.    system("cls");
  72.    for( cont_fil = 0; cont_fil < TAM_FIL; cont_fil++ )
  73.    {
  74.        for( cont_col = 0; cont_col < TAM_COL; cont_col++ )
  75.        {
  76.            printf("%c", laberinto[cont_fil][cont_col]);
  77.            printf("  ");
  78.        }
  79.  
  80.        printf("\n\n");
  81.    }
  82.    Sleep(200);
  83. }
  84.  
  85. int recorrerLaberinto( char laberinto[][TAM_COL], InformacionMapa *mapa, Objeto obj )
  86. {
  87.  
  88.    if( obj.pos_x == mapa->fin_fil && obj.pos_y == mapa->fin_col )
  89.    {
  90.        obj.estaEnFinal++;
  91.        return 1;
  92.    }
  93.  
  94.    laberinto[obj.pos_x][obj.pos_y] = obj.simbolo;
  95.  
  96.    mostrarEstadoMapa( laberinto );
  97.  
  98.    if( laberinto[obj.pos_x][obj.pos_y + 1] == ' ' && obj.pos_y + 1 < TAM_COL )
  99.    {
  100.        obj.pos_y++;
  101.        if( recorrerLaberinto( laberinto, mapa, obj ) == 1 )
  102.            return 1;
  103.    }
  104.  
  105.    if( laberinto[obj.pos_x + 1][obj.pos_y] == ' ' && obj.pos_x + 1 < TAM_FIL )
  106.    {
  107.        obj.pos_x++;
  108.        if( recorrerLaberinto( laberinto, mapa, obj ) == 1 )
  109.            return 1;
  110.    }
  111.  
  112.    if( laberinto[obj.pos_x - 1][obj.pos_y] == ' ' && obj.pos_x - 1 >= 0 )
  113.    {
  114.        obj.pos_x--;
  115.        if( recorrerLaberinto( laberinto, mapa, obj ) == 1 )
  116.            return 1;
  117.    }
  118.  
  119.    if( laberinto[obj.pos_x][obj.pos_y - 1] == ' ' && obj.pos_y - 1 >= 0 )
  120.    {
  121.        obj.pos_y--;
  122.        if( recorrerLaberinto( laberinto, mapa, obj ) == 1 )
  123.            return 1;
  124.    }
  125.  
  126.    return 0;
  127. }
  128.  
  129.  
En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #5 en: 28 Marzo 2014, 20:16 pm »

Por eso me gustaba usar la función rand() para que elija una de las opciones.
Iba marcando el camino por si entrara en un camino sin salida y cuando no había salida hacia que volviera por donde entro hasta que tuviera un camino sin recorrer.
Hacia que por donde había estado le marcaba como 1, por explorar 0 y sin salida 2 por ejemplo.
cuando llega a un lugar que tenga 3 caminos posibles pues elija uno al azar. y vaya marcando con 1 por donde había estado.
lo mete cada paso dado en una matriz por si no hay salida que vuelva hasta encontrar un 0 otra vez XDD y importante es marcar esos caminos sin salida para que no vuelva entrar otra vez.
Aquí hicimos montón de cosas XDD
Algunos hicieron que lo encontrara el mas corto pero así no me molaba XDD
Si es un laberinto, debe buscar la salida no saber donde esta :laugh:
Todo depende de lo que quieres.
http://foro.elhacker.net/programacion_cc/ayuda_con_programa_urgente-t404470.0.html
En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #6 en: 28 Marzo 2014, 20:24 pm »

Si pero es que un algoritmo que busque aleatoriamente podria tardar una eternidad en recorrer todo el laberinto, redundando en caminos que ya hubiese pasado anteriormente
En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
vangodp


Desconectado Desconectado

Mensajes: 455



Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #7 en: 28 Marzo 2014, 20:53 pm »

Pero buscar es una cosa y ir hacia el fin es otra.
Realmente cuando buscas haces elecciones no sabes donde esta en fin.
Y tanto no tarda. Allí tienes los algoritmos. Prueba los.
Para ir al final entonces lo programo para que lo haga señalando las casas por donde debe ir.
O le implemento un algoritmo de búsqueda que que me de el camino mas corto y en un ratico me dice donde esta el fin.
Para mi eso es trampa imagina que haces un juego, tu no sabes donde esta un personaje de la IA, tu quieres que el sepa donde estas?
Como dije depende de lo que quieres.
Lo que quería lo hice, haz tu lo mismo.

En línea

erest0r

Desconectado Desconectado

Mensajes: 147



Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #8 en: 28 Marzo 2014, 22:20 pm »

Eso depende del escenario, para un juego es otra cosa, son distintas reglas
En línea

Cruzar la calle junto a mucha gente cuando el semáforo sigue en rojo da seguridad y espíritu de equipo... o cruzamos todos o morimos juntos.
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Ayuda optimizacion busqueda de salida en laberinto
« Respuesta #9 en: 29 Marzo 2014, 11:13 am »

Si pero es que un algoritmo que busque aleatoriamente podria tardar una eternidad en recorrer todo el laberinto, redundando en caminos que ya hubiese pasado anteriormente
Pero esque la idea esque no repitas caminos xD.

De todas formas si solo buscas una salida, no necesitas que sea aleatorio. Te abasta con hacerte alguna estructura que permita recursión (lista o pilas), le pones un while ya debería ir.

Función que determina si dos puntos A y B están conectados:
Código
  1. #include <stack>
  2.  
  3. bool explora(char mat[][20],Cord inicio,Cord Destino,int TAMX,int TAMY)
  4. {
  5.    stack<Cord> Pila;
  6.    Pila.push(inicio);
  7.  
  8.    while (Pila.size() != 0)
  9.    {
  10.        //cout<<Pila.top().x<<" , "<<Pila.top().y<<endl;
  11.        // izquierda
  12.  
  13.        if (Pila.top().x > 0)
  14.        {
  15.            if (Pila.top().x-1 == Destino.x && Pila.top().y == Destino.y) return true;
  16.            if (mat[Pila.top().x-1][Pila.top().y] == 0)
  17.            {
  18.                mat[Pila.top().x-1][Pila.top().y] = 1;
  19.                Pila.push(Cord(Pila.top().x-1,Pila.top().y));
  20.                continue;
  21.            }
  22.        }
  23.  
  24.        // derecha
  25.  
  26.        if (Pila.top().x < TAMX-1)
  27.        {
  28.            if (Pila.top().x+1 == Destino.x && Pila.top().y == Destino.y) return true;
  29.            if (mat[Pila.top().x+1][Pila.top().y] == 0)
  30.            {
  31.                mat[Pila.top().x+1][Pila.top().y] = 1;
  32.                Pila.push(Cord(Pila.top().x+1,Pila.top().y));
  33.                continue;
  34.            }
  35.        }
  36.  
  37.        // arriba
  38.  
  39.        if (Pila.top().y > 0)
  40.        {
  41.            if (Pila.top().y-1 == Destino.y && Pila.top().x == Destino.x) return true;
  42.            if (mat[Pila.top().x][Pila.top().y-1] == 0)
  43.            {
  44.                mat[Pila.top().x][Pila.top().y-1] = 1;
  45.                Pila.push(Cord(Pila.top().x,Pila.top().y-1));
  46.                continue;
  47.            }
  48.        }
  49.  
  50.        // abajo
  51.  
  52.        if (Pila.top().y < TAMY-1)
  53.        {
  54.            if (Pila.top().y+1 == Destino.y && Pila.top().x == Destino.x) return true;
  55.            if (mat[Pila.top().x][Pila.top().y+1] == 0)
  56.            {
  57.                mat[Pila.top().x][Pila.top().y+1] = 1;
  58.                Pila.push(Cord(Pila.top().x,Pila.top().y+1));
  59.                continue;
  60.            }
  61.        }
  62.  
  63.       // mat[Pila.top().y][Pila.top().x] = 0;
  64.        Pila.pop();
  65.    }
  66.  
  67.    return false;
  68. }

NOTA: Uso ceros en vez de ' '.
« Última modificación: 29 Marzo 2014, 11:19 am por amchacon » En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Ayuda] Necesito el Laberinto de MCKSys Argentina
Programación Visual Basic
sebah97 5 2,282 Último mensaje 23 Junio 2010, 19:37 pm
por sebah97
Ayuda con laberinto en una matriz
Programación C/C++
edotropic 5 2,588 Último mensaje 20 Diciembre 2013, 13:29 pm
por leosansan
urgente!ayuda, Laberinto C++
Programación C/C++
RuKsu 7 3,816 Último mensaje 7 Diciembre 2014, 05:41 am
por sebah97
Ayuda, Codigo Laberinto
Programación C/C++
RuKsu 0 1,697 Último mensaje 10 Diciembre 2014, 21:03 pm
por RuKsu
guardar una salida de una búsqueda
Desarrollo Web
mysqlway 0 953 Último mensaje 21 Diciembre 2014, 01:28 am
por mysqlway
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines