#include<bits/stdc++.h> using namespace std; int L,n,m,sum,vis[102][102]; void ff(int h[102][102],int i,int j,int op,int L){ if(i<1||j<1||i>n||j>m) return; if(i==n&&j==m){ if(sum>op) sum=op; return; } vis[i][j]=1; if(fabs(h[i+1][j]-h[i][j])<=L&&vis[i+1][j]==0) ff(h,i+1,j,op+1,L); if(fabs(h[i][j+1]-h[i][j])<=L&&vis[i][j+1]==0) ff(h,i,j+1,op+1,L); if(fabs(h[i-1][j]-h[i][j])<=L&&vis[i-1][j]==0) ff(h,i-1,j,op+1,L); if(fabs(h[i][j-1]-h[i][j])<=L&&vis[i][j-1]==0) ff(h,i,j-1,op+1,L); vis[i][j]=0; } int main(){ int T,i,j,h[102][102]; cin>>T;getchar(); while(T--){ h[102][102]={0}; cin>>n>>m>>L; sum=m*n; for(i=1;i<=n;i++) for(j=1;j<=m;j++) cin>>h[i][j]; ff(h,1,1,0,L); cout<<sum<<endl; } } |
Double click to view unformatted code.