Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- const char INFILE[]="saritura_calului1.in";
- const char OUTFILE[]="saritura_calului1.out";
- ifstream fIn(INFILE);
- ofstream fOut(OUTFILE);
- const int DIMMAX = 100 + 1;
- const int dir[2][8] = {
- {1,2,2,1,-1,-2,-2,-1},
- {2,1,-1,-2,-2,-1,1,2} };
- int mat[DIMMAX][DIMMAX],nrl,nrc,li,ci,pas;
- inline int NrDir(int lin,int col)
- {
- int nr=0,l,c;
- for(int i=0;i<8;++i)
- {
- l=lin+dir[0][i],c=col+dir[1][i];
- if(l>0&&c>0&&l<=nrl&&c<=nrc&&!mat[l][c])
- ++nr;
- }
- return nr;
- }
- inline void Saritura(int lin,int col)
- {
- mat[lin][col]=pas+1;
- int l,c,mi=9,x,l_sol,c_sol;
- bool ok=0;
- for(int i=0;i<8;++i)
- {
- l=lin+dir[0][i],c=col+dir[1][i];
- if(l<1||c<1||l>nrl||c>nrc||mat[l][c])
- continue;
- x=NrDir(l,c);
- if(x<mi)
- mi=x,l_sol=l,c_sol=c,ok=true;
- }
- if(ok)
- {
- ++pas;
- Saritura(l_sol,c_sol);
- }
- }
- int main()
- {
- fIn>>nrl>>nrc>>li>>ci;
- Saritura(li,ci);
- for(int j,i=1;i<=nrl;++i,fOut<<'\n')
- for(j=1;j<=nrc;++j)
- fOut<<mat[i][j]<<' ';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement