Advertisement
a53

TraseuCal

a53
Oct 4th, 2017
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  1. #include <fstream>
  2. #include <cstdlib>
  3. using namespace std;
  4. ifstream fin("traseucal.in");
  5. ofstream fout("traseucal.out");
  6. const int di[8]={-1,1,2,2,1,-1,-2,-2};
  7. const int dj[8]={-2,-2,-1,1,2,2,1,-1};
  8. int a[101][101];
  9. int x[1001][3],n,m;
  10. int is,js,ib,jb;
  11.  
  12. void afis()
  13. {
  14. for (int i=1;i<=n;i++)
  15. {
  16. for(int j=1;j<=m;j++)
  17. {
  18. if(a[i][j]==1)
  19. a[i][j]=0;
  20. a[1][1]=1;
  21. fout<<a[i][j]<<' ';
  22. }
  23. fout<<'\n';
  24. }
  25. }
  26.  
  27. void citire()
  28. {
  29. fin>>n>>m;
  30. is=1;
  31. js=1;
  32. ib=n;
  33. jb=m;
  34. for(int i=1;i<=n;i++)
  35. for(int j=1;j<=m;j++)
  36. fin>>a[i][j];
  37. }
  38.  
  39. int inside(int i,int j)
  40. {
  41. return i>=1&&i<=n&&j>=1&&j<=m;
  42. }
  43.  
  44. void backtracking(int i,int j,int pas)
  45. {
  46. int inou,jnou,k;
  47. if(i==ib&&j==jb)
  48. {
  49. afis();
  50. exit(0);
  51. }
  52. else
  53. for(k=0;k<8;k++)
  54. {
  55. inou=i+di[k];
  56. jnou=j+dj[k];
  57. if(inside(inou,jnou)&&a[inou][jnou]==0)
  58. {
  59. a[inou][jnou]=pas;
  60. x[pas][1]=inou;
  61. x[pas][2]=jnou;
  62. backtracking(inou,jnou,pas+1);
  63. a[inou][jnou]=0;
  64. }
  65. }
  66. }
  67.  
  68. int main()
  69. {
  70. citire();
  71. backtracking(is,js,2);
  72. for (int i=1;i<=n;i++)
  73. {
  74. for(int j=1;j<=m;j++)
  75. fout<<0<<' ';
  76. fout<<'\n';
  77. }
  78. fin.close();
  79. fout.close();
  80. return 0;
  81. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement