Advertisement
a53

Saritura_calului_1

a53
Nov 27th, 2017
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. #include <fstream>
  2. using namespace std;
  3. const char INFILE[]="saritura_calului1.in";
  4. const char OUTFILE[]="saritura_calului1.out";
  5. ifstream fIn(INFILE);
  6. ofstream fOut(OUTFILE);
  7. const int DIMMAX = 100 + 1;
  8. const int dir[2][8] = {
  9. {1,2,2,1,-1,-2,-2,-1},
  10. {2,1,-1,-2,-2,-1,1,2} };
  11.  
  12. int mat[DIMMAX][DIMMAX],nrl,nrc,li,ci,pas;
  13.  
  14. inline int NrDir(int lin,int col)
  15. {
  16. int nr=0,l,c;
  17. for(int i=0;i<8;++i)
  18. {
  19. l=lin+dir[0][i],c=col+dir[1][i];
  20. if(l>0&&c>0&&l<=nrl&&c<=nrc&&!mat[l][c])
  21. ++nr;
  22. }
  23. return nr;
  24. }
  25.  
  26. inline void Saritura(int lin,int col)
  27. {
  28. mat[lin][col]=pas+1;
  29. int l,c,mi=9,x,l_sol,c_sol;
  30. bool ok=0;
  31. for(int i=0;i<8;++i)
  32. {
  33. l=lin+dir[0][i],c=col+dir[1][i];
  34. if(l<1||c<1||l>nrl||c>nrc||mat[l][c])
  35. continue;
  36. x=NrDir(l,c);
  37. if(x<mi)
  38. mi=x,l_sol=l,c_sol=c,ok=true;
  39. }
  40. if(ok)
  41. {
  42. ++pas;
  43. Saritura(l_sol,c_sol);
  44. }
  45. }
  46.  
  47. int main()
  48. {
  49. fIn>>nrl>>nrc>>li>>ci;
  50. Saritura(li,ci);
  51. for(int j,i=1;i<=nrl;++i,fOut<<'\n')
  52. for(j=1;j<=nrc;++j)
  53. fOut<<mat[i][j]<<' ';
  54. return 0;
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement