#include<stdlib.h> #include<stdio.h> int stair[1000][1000]={0}; int n,m; int search(int i,int j){ if(stair[i][j]>stair[i+1][j] && stair[i][j]>stair[i-1][j] && stair[i][j]>stair[i][j+1] && stair[i][j]>stair[i][j-1]) return 0; int l=0,u=0,r=0,d=0; if(stair[i][j]<stair[i][j-1]){ l = 1 + search(i,j-1); } if(stair[i][j]<stair[i-1][j]){ u = 1 + search(i-1,j); } if(stair[i][j]<stair[i][j+1]){ r = 1 + search(i,j+1); } if(stair[i][j]<stair[i+1][j]){ d = 1 + search(i+1,j); } int max1,max2; if (l>r) max1 = l; else max1 = r; if(u>d) max2 = u; else max2 = d; int max; if(max1 > max2) max = max1; else max = max2; return max; } int main(){ scanf("%d %d",&n,&m); for(int i=1; i<=n; i++){ for(int z=1; z<=m; z++) scanf("%d",&stair[i][z]); } int max=0; for(int i=1; i<=n; i++){ for(int z=1; z<=m; z++){ int result = search(i,z); if(result > max) max = result; } } printf("%d\n",max); return 0; } |
Double click to view unformatted code.