fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4.  
  5. int n, k;
  6. int dx[] = {-1, -2, -2, -1, 1, 2, 2, 1};
  7. int dy[] = {-2, -1, 1, 2, 2, 1, -1, -2};
  8. set<pair<int, int> > soluciones;
  9.  
  10. bool ok(int x, int y) {
  11. if(x >= 0 && x < n && y >= 0 && y < n)
  12. return true;
  13. return false;
  14. }
  15.  
  16. void f(int x, int y, int i) { //i = cuantos pasos le quedan al caballo
  17. if(i == k) {
  18. soluciones.insert({x, y});
  19. return;
  20. }else{
  21. //recorremos las 8 posiciones del caballo
  22. for(int j = 0; j < 8; j++){
  23. int nx = x + dx[j]; //nueva posicion en x
  24. int ny = y + dy[j]; //nueva posicion en y
  25. if(ok(nx, ny)) { //verifica que el caballo no se haya salido del tablero
  26. f(nx, ny, i + 1);
  27. }
  28. }
  29. }
  30.  
  31. }
  32.  
  33. int main(){
  34. /*
  35.   Un caballo está en la celda (0,0) de un tablero de ajedrez n*n.
  36.   Es decir, en la esquina superior izquierda, tienes que decir el número de casillas que
  37.   puede alcanzar el caballo con exactamente k movimientos.
  38.   */
  39. cin >> n >> k;
  40. f(0, 0, 0);
  41. for(pair<int, int> x : soluciones) {
  42. cout << x.first << " " << x.second << "\n";
  43. }
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
0 0