Advertisement
andreisophie

OPEN Knight's Tour 1,1

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