#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=0; while(scanf("%d%d",&m,&n)!=EOF){ int stair[100][100]; for(int i=0;i<m+2;i++){ for(int j=0;j<n+2;j++){ if(i==0||i==m+1||j==0||j==n+1){ stair[i][j]=0; } else{ 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.