Dev - C++ - AYUDA LABERINTO

 
Vista:
sin imagen de perfil

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder