
AYUDA LABERINTO
Publicado por Jul (2 intervenciones) el 09/02/2016 19:14:56
Hola, tengo que resolver este ejercicio con recursividad.. pero es que no se como hacerlo.. alguien me podría ayudar ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include <iostream>
using namespace std;
#define INFINITO 999999999
#define MAXCOL 7
int camino_mas_corto(int mapa[][MAXCOL], int fila, int columna, int pasos);
int main(){
//Mapa de ejemplo del enunciado.
// - Los -1 son celdas de muro
// - Los 0 son celdas que se pueden recorrer
// - El -2 es la celda inicial que usamos para comenzar a buscar la salida
// - El -3 es la salida que debes buscar usando la funcion camino_mas_corto()
int mapa[18][MAXCOL] = {
{-1,0,0,0,0,0,0},
{0,-1,0,0,0,0,0},
{0,0,-1,0,-1,0,0},
{-2,0,-1,0,-1,0,-3},
{0,0,-1,0,-1,0,0},
{0,0,-1,0,-1,0,0},
{0,0,0,0,-1,0,0},
{0,0,-1,0,-1,0,0},
{0,0,-1,0,-1,0,0},
{0,0,-1,0,-1,0,0},
{0,0,0,0,-1,0,0},
{0,0,0,0,-1,0,0},
{0,0,0,0,-1,0,0},
{0,0,0,0,-1,0,0},
{0,0,0,0,-1,0,0},
{0,0,0,0,-1,0,0},
{0,0,0,0,-1,0,0},
{0,0,0,0,0,0,0}
};
//Tu programa sigue aqu�
return 0;
}
int camino_mas_corto(int mapa[][MAXCOL], int fila, int columna, int pasos){
//Tu código en C++ para la función recursiva va aqui
/*
int arriba, abajo, dcha, izda;
Si estamos en la celda de la salida
Devolver pasos;
//anotamos los pasos que hemos dado hasta llegar aqui
mapa[fila][columna] = pasos;
Si podemos avanzar a la celda de la izquierda Y mapa[fila][columna-1] > pasos+1
izda = camino_mas_corto(mapa, fila, columna-1, pasos+1);
Si podemos avanzar a la celda de la derecha Y mapa[fila][columna+1] > pasos+1
dcha = camino_mas_corto(mapa, fila, columna+1, pasos+1);
Si podemos avanzar a la celda inferior Y mapa[fila+1][columna] > pasos+1
abajo = camino_mas_corto(mapa, fila+1, columna, pasos+1);
Si podemos avanzar a la celda superior Y mapa[fila-1][columna] > pasos+1
arriba = camino_mas_corto(mapa, fila-1, columna, pasos+1);
Si no podemos avanzar a ningún lado
Devolver INFINITO;
//Han terminado las llamadas recursivas, debemos devolver
//el camino más corto encontrado por todas
Devolver minimo(izda, dcha, arriba, abajo);
*/
}
Valora esta pregunta


0