View Code of Problem 17

#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int dfs(int a[20][20],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(c2,max(c3,c4)));
}
int main(){
	int m,n;
	int a[20][20]={0};
	while(cin>>m>>n){
		for(int i=1;i<=m;i++)
			for(int j=1;j<=n;j++)
				cin>>a[i][j];
		int max0=0;
		for(int i=1;i<=m;i++)
			for(int j=1;j<=n;j++){
				int cnt=dfs(a,i,j,0);
				max0=max(max0,cnt);
			}
		cout<<max0<<endl;
	}
} 

Double click to view unformatted code.


Back to problem 17