#include <iostream> #include <cmath> #include <cstring> using namespace std; int a[110][110],t,m,n,L,minn,vis[110][110]; int dir[4][2]={-1,0,0,-1,0,1,1,0}; void jump(int x,int y,int step){ if(x<0||y<0||x>=m||y>=n) return ; if(x==m-1&&y==n-1){ minn=min(step,minn); // cout<<minn<<"------\n"; return ; } vis[x][y]=1; for(int i=0;i<4;i++){ int nx=x+dir[i][0]; int ny=y+dir[i][1]; // cout<<"nx:"<<nx<<" ny:"<<ny<<endl; if(fabs(a[x][y]-a[nx][ny])<=L&&vis[nx][ny]==0) jump(nx,ny,step+1); } vis[x][y]=0; } int main(){ cin>>t; while(t--){ cin>>m>>n>>L; minn=m*n; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ cin>>a[i][j]; } } jump(0,0,0); cout<<minn<<endl; memset(a,0,sizeof(a)); } return 0; } |
Double click to view unformatted code.