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"); }