Untitled

 avatar
unknown
c_cpp
4 years ago
1.2 kB
3
Indexable
#include <iostream>
using namespace std;
//  ifstream cin("hercule.in");
//  ofstream cout("hercule.out");
int n,m,b[11][11];
int a[11][11];
const int di[] = {0,   0, 1,-1, 1, 1,-1,-1};
const int dj[] = {1 , -1 ,0 ,0, 1,-1,1-1};
int inside(int i , int j)
{
    return i >= 0 && i < n && j >= 0 && j < m;
}
void afis(){
    
    for(int i=0;i<n;i++){
       for(int j=0;j<m;j++){
        cout<<b[i][j]<<" ";
       }
       cout<<endl;
    }
    cout<<endl;
}
void back(int i,int j,int pas){
    for(int d=0;d<8;d++){
        int in=i+di[d];
        int jn=j+dj[d];

         if(inside(in,jn)&&a[in][jn]>=pas&&a[in][jn]<=pas+1){
              b[in][jn]=b[i][j]+1;
              int c=a[in][jn];
              a[in][jn]=0;
           
             if(in==n-1&&jn==m-1)
                afis();
            back(in,jn,c);      
            b[in][jn]=0;
            a[in][jn]=c; 
         }
        }
    }

int main() {
    cin>>n>>m;
    
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>a[i][j];            
            }
        } 
    
    b[0][0]=1;
    int l=a[0][0];
    a[0][0]=0;
    back(0,0,l); 
  return 0;
}
Editor is loading...