22/05/2013, 06:39
|
| | Fecha de Ingreso: noviembre-2012
Mensajes: 12
Antigüedad: 12 años Puntos: 0 | |
Tipo de Recursividad? Hola, amigos, tengo este algoritmo recursivo y estoy en duda si es una Recursion Directa o Anidada?
saludos
Mariam
Código:
int grid[1001][1001], N;
pair<int,int> PuntoInicio, PuntoFinal;
int solve(pair<int,int> actual)
{
if(actual.first == PuntoInicio.first && actual.second == PuntoInicio.second)
return 1; //caso inicio, llegaste al punto de inicio
if(actual.first < PuntoInicio.first || actual.second < PuntoInicio.second)
return 0; //salir del metodo, no hay forma de llegar al punto de inicio desde aqui
pair < int,int > p1, p2, p3;
p1.first = actual.first - 1;
p1.second = actual.second; //punto arriba del q estoy (x-1, y)
p2.first = actual.first;
p2.second = actual.second - 1; //punto a la izquierda del q estoy (x, y - 1)
p3.first = actual.first - 1;
p3.second = actual.second - 1; //punto en diagonal arriba izquierda del q estoy (x - 1, y - 1)
return solve(p1) + solve(p2) + solve(p3);
}
int main()
{
cin >> N;
cin >> PuntoInicio.first >> PuntoInicio.second;
cin >> PuntoFinal.first >> PuntoFinal.second;
cout << solve( PuntoFinal ) << endl;
system("pause");
}
|