View Code of Problem 17

#include<stdio.h>
#include<stdlib.h>

int dinimade(int stair[100][100],int i,int j){
	int w=0,s=0,a=0,d=0,max=0;
	if(stair[i][j]>stair[i][j-1]&&stair[i][j]>stair[i][j+1]&&stair[i][j]>stair[i-1][j]&&stair[i][j]>stair[i+1][j]){
		return 0;
	}
	if(stair[i][j]<stair[i][j-1]){
		a=dinimade(stair,i,j-1)+1;
	}
	if(stair[i][j]<stair[i][j+1]){
		d=dinimade(stair,i,j+1)+1;
	}
	if(stair[i][j]<stair[i-1][j]){
		w=dinimade(stair,i-1,j)+1;
	}
	if(stair[i][j]<stair[i+1][j]){
		s=dinimade(stair,i+1,j)+1;
	}
	if(max<w)max=w;
	if(max<s)max=s;
	if(max<a)max=a;
	if(max<d)max=d;
	return max;
}

int main(){
	int m,n,temp=0,max;
	while(scanf("%d%d",&m,&n)!=EOF){
	max=0;
	int stair[100][100]={0};
	for(int i=1;i<m+1;i++){
		for(int j=1;j<n+1;j++){
			scanf("%d",&stair[i][j]);
		}
	}
	for(int i=1;i<m+1;i++){
		for(int j=1;j<n+1;j++){
			temp=dinimade(stair,i,j);
			if(temp>max)max=temp;
		}
	}
	printf("%d\n",max);
	}
} 

Double click to view unformatted code.


Back to problem 17