Advertisement
Guest User

Untitled

a guest
Jan 16th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <fstream>
  2. #include <iostream>
  3. using namespace std;
  4. ifstream fin("traseucal.in");
  5. ofstream fout("traseucal.out");
  6. struct ceva{int l,c,d;}s[105];
  7. int a[15][15],n,m,b[15][15],nsol;
  8. int dl[]={-1,-2,-2,-1,1,2,2,1};
  9. int dc[]={-2,-1,1,2,2,1,-1,-2};
  10.  
  11. int corect(int k);
  12. void afisare(int k);
  13. void bkt(int k);
  14.  
  15. int main()
  16. { int i,j;
  17. fin>>n>>m;
  18. for(i=1;i<=n;i++)
  19. for(j=1;j<=m;j++)
  20. fin>>a[i][j];
  21.  
  22.  
  23. s[1].l=s[1].c=1; s[1].d=-1;
  24. bkt(2);
  25. if(nsol==0)
  26. {
  27. for(i=1;i<=n;i++)
  28. {for(j=1;j<=m;j++)fout<<b[i][j]<<" ";
  29. fout<<endl;}
  30. }
  31. return 0;
  32. }
  33.  
  34. void bkt(int k)
  35. {
  36. int i;
  37. for(i=0;i<8;i++)
  38. {
  39. s[k].d=i;
  40. s[k].l=s[k-1].l+dl[i];
  41. s[k].c=s[k-1].c+dc[i];
  42. if(corect(k))
  43. {
  44. if(s[k].l==n&&s[k].c==m)afisare(k);
  45. else bkt(k+1);
  46. }
  47. }
  48. }
  49. int corect(int k)
  50. {
  51. int i;
  52.  
  53. if(nsol>0) return 0;
  54.  
  55. if(s[k].l<1||s[k].l>n) return 0;
  56. if(s[k].c<1||s[k].c>m) return 0;
  57.  
  58. if(a[s[k].l][s[k].c]==1) return 0;
  59.  
  60. for(i=1;i<k;i++)
  61. if(s[i].l==s[k].l&&s[i].c==s[k].c) return 0;
  62.  
  63. return 1;
  64. }
  65.  
  66. void afisare(int k)
  67. { int i,j;
  68. nsol++;
  69. for(i=1;i<=k;i++) b[s[i].l][s[i].c]=i;
  70.  
  71. for(i=1;i<=n;i++)
  72. {for(j=1;j<=m;j++)fout<<b[i][j]<<" ";
  73. fout<<endl;}
  74.  
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement