Advertisement
andreisophie

CLOSED Knight's Tour 1,1

Sep 28th, 2019
171
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <fstream>
  2. #define dim 8
  3.  
  4. using namespace std;
  5.  
  6. ofstream g("knighttour.out");
  7.  
  8. int deplx[8]={1,2,2,1,-1,-2,-2,-1},deply[8]={2,1,-1,-2,-2,-1,1,2};
  9.  
  10. int a[dim][dim],n=1;
  11.  
  12. bool valid(int xn, int yn)
  13. {
  14.     if (xn>=0 && yn>=0 && xn<dim && yn<dim && a[xn][yn]==0)
  15.         return true;
  16.     return false;
  17. }
  18.  
  19. bool solutie()
  20. {
  21.     if (n==dim*dim+1 && (a[1][2]==dim*dim || a[2][1]==dim*dim))
  22.         return true;
  23.     return false;
  24. }
  25.  
  26. void tipar()
  27. {
  28.     for (int i=0;i<dim;i++)
  29.     {
  30.         for (int j=0;j<dim;j++)
  31.         {
  32.             g<<a[i][j]<<' ';
  33.             if (a[i][j]<10)
  34.                 g<<' ';
  35.         }
  36.         g<<'\n';
  37.     }
  38.     g<<'\n';
  39. }
  40.  
  41. void bck(int x, int y)
  42. {
  43.     int xn,yn;
  44.     a[x][y]=n++;
  45.     if (solutie())
  46.         tipar();
  47.     else
  48.     {
  49.         for (int i=0;i<8;i++)
  50.         {
  51.             xn=x+deplx[i];
  52.             yn=y+deply[i];
  53.             if (valid(xn,yn))
  54.                 bck(xn,yn);
  55.         }
  56.     }
  57.     a[x][y]=0;
  58.     n--;
  59. }
  60.  
  61. int main()
  62. {
  63.     bck(0,0);
  64.     return 0;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement