View Code of Problem 17

#include<bits/stdc++.h>
using namespace std;
int MAX;int a[300][300];
void dfs(int i,int j,int step){
	if(a[i][j]<a[i+1][j]) dfs(i+1,j,step+1);
	if(a[i][j]<a[i-1][j]) dfs(i-1,j,step+1);
	if(a[i][j]<a[i][j+1]) dfs(i,j+1,step+1);
	if(a[i][j]<a[i][j-1]) dfs(i,j-1,step+1);
	if(step>MAX){
		MAX=step;
	}
	
}
 
int main(){
	int m,n;
	while(cin>>m>>n){
		int i,j;
		MAX=-999;
		memset(a,0,sizeof(a));
		for(i=1;i<=m;i++){
			for(j=1;j<=n;j++){
				cin>>a[i][j];
			}
		}
		for(i=1;i<=m;i++){
			for(j=1;j<=n;j++){
				dfs(i,j,0);
			}
		}
		cout<<MAX<<endl;
		
	}
	
    return 0;
}

Double click to view unformatted code.


Back to problem 17