#include <cstdio> #include <iostream> using namespace std; int mmap[100][100]={0}; //int max(int t,int l,int r,int b){ // int maxs=t; // if(maxs<l) // maxs=l; // if(maxs<r) // maxs=r; // if(maxs<b) // maxs=b; // return maxs; //} int getMax(int le,int ri,int ba,int fr) { int p,q,c; p=le>ri?le:ri; q=ba>fr?ba:fr; c=p>q?p:q; return c; } int digui(int i,int j,int mmap[100][100]){ int t=0,l=0,r=0,b=0; int top,left,right,bottom,curent; top=mmap[i-1][j]; left=mmap[i][j-1]; right=mmap[i][j+1]; bottom=mmap[i+1][j]; curent=mmap[i][j]; if(top>curent){ t=digui(i-1,j,mmap)+1; } if(left>curent){ l= digui(i,j-1,mmap)+1; } if(right>curent){ r= digui(i,j+1,mmap)+1; } if(bottom>curent){ b=digui(i+1,j,mmap)+1; } return getMax(t,l,r,b); } int main(){ int n,m; while(cin>>n>>m){ for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>mmap[i][j]; } } int maxs=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ int res=digui(i,j,mmap); if(maxs<res) maxs=res; } } cout<<maxs<<endl; } return 0; } |
Double click to view unformatted code.