View Code of Problem 17

#include <stdio.h>

int max(int a,int b,int c,int d){
	int max = a;
	max = max>b?max:b;
	max = max>c?max:c;
	max = max>d?max:d;
	return max; 
}

int fun(int a[][1000],int n,int m,int i,int j){
	int left=0,right=0,up=0,down=0;
	if(i-1>=0&&a[i][j]<a[i-1][j]){
		left = 1 + fun(a,n,m,i-1,j);
	}
	if(i+1<n&&a[i][j]<a[i+1][j]){
		right = 1 + fun(a,n,m,i+1,j);
	}
	if(j-1>=0&&a[i][j]<a[i][j-1]){
		up = 1 + fun(a,n,m,i,j-1);
	}
	if(j+1<m&&a[i][j]<a[i][j+1]){
		down = 1 + fun(a,n,m,i,j+1);
	}
	return max(left,right,up,down);
}

int main(){
	int n,m;
	while(scanf("%d %d",&n,&m)!=EOF){
		int a[n][1000];
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				scanf("%d",&a[i][j]);
			}
		}
		int max = 0;
		for(int i=0;i<n;i++){
			for(int j=0;j<m;j++){
				if(max<fun(a,n,m,i,j)){
					max = fun(a,n,m,i,j);
				}
			}
		}
		printf("%d\n",max);
	}
}

Double click to view unformatted code.


Back to problem 17