Advertisement
a53

TraseuCalMax

a53
Oct 24th, 2017
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. ifstream f("traseucalmax.in");
  4. ofstream g("traseucalmax.out");
  5. int n,m,is,js,ib,jb,a[11][11],b[11][11],maxim=0;
  6. const int di[]={2, 2, 1, 1,-1,-1,-2,-2},
  7. dj[]={1,-1, 2,-2, 2,-2, 1,-1};
  8.  
  9. void retsol(int a[][11])
  10. {
  11. for(int i=1;i<=n;++i)
  12. for(int j=1;j<=m;++j)
  13. b[i][j]=a[i][j];
  14. }
  15.  
  16. void afisare(int a[][11])
  17. {
  18. for(int i=1;i<=n;++i)
  19. {
  20. for(int j=1;j<=m;++j)
  21. if(b[i][j]<1)
  22. g<<0<<' ';
  23. else
  24. g<<b[i][j]<<' ';
  25. g<<'\n';
  26. }
  27. }
  28.  
  29.  
  30. void backtracking(int i,int j,int pas)
  31. {
  32. if(i>0&&i<=n&&j>0&&j<=m&&a[i][j]==0)
  33. {
  34. a[i][j]=pas;
  35. //afis(a);
  36. if(i==n&&j==m)
  37. {
  38. if(pas>maxim)
  39. maxim=pas,retsol(a);
  40. }
  41. else
  42. for(int k=0;k<8;++k)
  43. backtracking(i+di[k],j+dj[k],pas+1);
  44. a[i][j]=0;
  45. }
  46. }
  47.  
  48. int main()
  49. {
  50. f>>n>>m;
  51. for(int i=1;i<=n;++i)
  52. for(int j=1;j<=m;++j)
  53. f>>a[i][j],a[i][j]*=-1;
  54. backtracking(1,1,1);
  55. afisare(b);
  56. return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement