View Code of Problem 3852

#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.


Back to problem 3852