View Code of Problem 217

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int dfs(int a[102][102],int i,int j,int cnt){
	int c1=cnt,c2=cnt,c3=cnt,c4=cnt;
	if(a[i+1][j]<a[i][j]){c1=dfs(a,i+1,j,cnt+1);}
	if(a[i][j+1]<a[i][j]){c2=dfs(a,i,j+1,cnt+1);}
	if(a[i-1][j]<a[i][j]){c3=dfs(a,i-1,j,cnt+1);}
	if(a[i][j-1]<a[i][j]){c4=dfs(a,i,j-1,cnt+1);} 
	return max(c1,max(max(c2,c3),c4));
}

int main(){
	int m,n;
	int a[102][102]={0};
	cin>>m>>n;
	memset(a,0,sizeof(a));
	for(int i=1;i<=m;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	int max=0;
	for(int i=0;i<m;i++)
		for(int j=0;j<n;j++){
			int cnt=dfs(a,i,j,0);
			if(cnt>max) max=cnt;
		}
	cout<<max<<endl;
} 

Double click to view unformatted code.


Back to problem 217