You are on page 1of 1

#include <fstream>

using namespace std;

ifstream fin("traseucalmax.in");
ofstream fout("traseucalmax.out");

int n,v[12][12],a[12][12],m,maxim;
int diri[]={1,1,-1,-1,2,2,-2,-2};
int dirj[]={2,-2,2,-2,1,-1,1,-1};
void back (int i, int j, int k){
if(i==n && j==m){
if(k>maxim){
maxim=k;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
a[i][j]=v[i][j];
}
}
}
}
v[i][j]=k;

for(int d=0;d<=7;d++){
int iVecin=i+diri[d];
int jVecin=j+dirj[d];

if(iVecin>=1 && iVecin<=n && jVecin>=1 && jVecin<=m && v[iVecin]


[jVecin]==0){
back(iVecin,jVecin,k+1);
}
}
v[i][j]=0;

int main(){
fin>>n>>m;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
fin>>v[i][j];
}
}
back(1,1,1);
a[n][m]=maxim;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
fout<<a[i][j]<<" ";
}
fout<<'\n';
}
return 0;

You might also like