Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- ifstream fin("traseucal.in");
- ofstream fout("traseucal.out");
- int a[15][15];
- int n, m;
- pair<int, int> D[230];
- int di[8]={-1,1,-1,1,-2,2,-2,2};
- int dj[8]={-2,-2,2,2,-1,-1,1,1};
- int ok=1;
- int rez=0;
- int contur (int i, int j)
- {
- return i>=1 && i<=n && j>=1 && j<=n;
- }
- void backt(int i, int j, int pas)
- {
- //cout<<i<<" "<<j<<endl;
- a[i][j]=pas;
- D[pas]={i,j};
- //cout<<"1";
- if(i==n && j==m)
- {
- for(int k=1;k<=pas;k++)
- {
- cout<<D[k].first<<" "<<D[k].second<<endl;
- }
- rez=pas;
- ok=0;
- }
- else
- {
- for(int k=0;k<8 && ok!=0 ;k++)
- {
- int nexti=i+di[k];
- int nextj=j+dj[k];
- if(a[nexti][nextj]==0 && contur(nexti, nextj)==1)
- {
- backt(nexti,nextj,pas+1);
- }
- }
- }
- a[i][j]=0;
- }
- int main()
- {
- int i, j;
- fin>>n>>m;
- for(i=1;i<=n;i++)
- {
- for(j=1;j<=m;j++)
- {
- fin>>a[i][j];
- }
- }
- backt(1,1,1);
- memset(a,0,sizeof(a));
- // cout<<D[1].first<<" "<<D[1].second;
- int aux=0;
- for(i=1;i<=rez;i++)
- {
- aux++;
- a[D[i].first][D[i].second]=aux;
- }
- for(i=1;i<=n;i++)
- {
- for(j=1;j<=m;j++)
- {
- fout<<a[i][j]<<" ";
- }
- fout<<endl;
- }
- fin.close();
- fout.close();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement