#include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<vector> #include<map> #include<string> #include<set> using namespace std; int step(int d[100][100],int i,int j){ int n=0,s=0,w=0,e=0; if(d[i][j]>d[i][j+1]&&d[i][j]>d[i][j-1]&&d[i][j]>d[i-1][j]&&d[i][j]>d[i+1][j]) return 0; else{ if(d[i][j]<d[i][j-1]) e=step(d,i,j-1)+1; if(d[i][j]<d[i][j+1]) w=step(d,i,j+1)+1; if(d[i][j]<d[i-1][j]) n=step(d,i-1,j)+1; if(d[i][j]<d[i+1][j]) s=step(d,i+1,j)+1; return max(n,s)>max(w,e)?max(n,s):max(w,e); } } int main(void){ int n,m,max; int d[100][100]; while(cin>>n>>m){ memset(d,0x0,sizeof d); max=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>d[i][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(max<step(d,i,j)) max=step(d,i,j); } } cout<<max<<endl; } } |
Double click to view unformatted code.