Advertisement
D00mguy

Saritura_calului_1_bkt

Feb 26th, 2020
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int n,m;
  4. bool a[101][101];
  5. int dx[]={-2,-1,+1,+2,+2,+1,-1,-2};
  6. int dy[]={-1,-2,-2,-1,+1,+2,+2,+1};
  7. ifstream f ("saritura_calului1.in");
  8. ofstream g ("saritura_calului1.out");
  9. bool valid(int i,int j)
  10. {
  11.     return (i>0 && i<=n && j>0 && j<=m && a[i][j]==0);
  12. }
  13. bool solutie ()
  14. {
  15.     int i,j;
  16.     for(i=1;i<=n;i++)
  17.         for(j=1;j<=m;j++)
  18.             if(a[i][j]==0)
  19.                 return 0;
  20.     return 1;
  21. }
  22. void afis ()
  23. {
  24.     int i,j;
  25.     for(i=1;i<=n;i++)
  26.     {
  27.         for(j=1;j<=m;j++)
  28.             g<<a[i][j]<<' ';
  29.         g<<'\n';
  30.     }
  31.  
  32. }
  33. void bkt(int k,int startx,int starty)
  34. {
  35.     int x9,y9,i;
  36.     if(solutie())
  37.     {
  38.         afis();
  39.         exit(0);
  40.     }
  41.  
  42.  
  43.     for(i=0;i<8;i++)
  44.     {
  45.         x9=startx+dx[i];
  46.         y9=starty+dy[i];
  47.         if(valid(x9,y9))
  48.         {
  49.             cout<<k<<'\n';
  50.             a[x9][y9]=k;
  51.             bkt(k+1,x9,y9);
  52.             a[x9][y9]=0;
  53.         }
  54.     }
  55. }
  56. int main()
  57. {
  58.     int startx,starty,i,j;
  59.     f>>n>>m>>startx>>starty;
  60.     for(i=1;i<=n;i++)
  61.         for(j=1;j<=m;j++)
  62.             f>>a[i][j];
  63.     a[startx][starty]=1;
  64.     bkt(2,startx,starty);
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement