Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- using namespace std;
- ifstream f("traseucalmax.in");
- ofstream g("traseucalmax.out");
- int n,m,is,js,ib,jb,a[11][11],b[11][11],maxim=0;
- const int di[]={2, 2, 1, 1,-1,-1,-2,-2},
- dj[]={1,-1, 2,-2, 2,-2, 1,-1};
- void retsol(int a[][11])
- {
- for(int i=1;i<=n;++i)
- for(int j=1;j<=m;++j)
- b[i][j]=a[i][j];
- }
- void afisare(int a[][11])
- {
- for(int i=1;i<=n;++i)
- {
- for(int j=1;j<=m;++j)
- if(b[i][j]<1)
- g<<0<<' ';
- else
- g<<b[i][j]<<' ';
- g<<'\n';
- }
- }
- void backtracking(int i,int j,int pas)
- {
- if(i>0&&i<=n&&j>0&&j<=m&&a[i][j]==0)
- {
- a[i][j]=pas;
- //afis(a);
- if(i==n&&j==m)
- {
- if(pas>maxim)
- maxim=pas,retsol(a);
- }
- else
- for(int k=0;k<8;++k)
- backtracking(i+di[k],j+dj[k],pas+1);
- a[i][j]=0;
- }
- }
- int main()
- {
- f>>n>>m;
- for(int i=1;i<=n;++i)
- for(int j=1;j<=m;++j)
- f>>a[i][j],a[i][j]*=-1;
- backtracking(1,1,1);
- afisare(b);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement