洛谷P1434。本题边界处理很有趣
#include<bits/stdc++.h>
using namespace std;
int f[101][101];int n[102][102];int r,c;
int sear(int n0,int m0)
{if(n0==0||m0==0)return 0;if(n0==r+1||m0==c+1)return 0;if(f[n0][m0]!=-1)return f[n0][m0];//int max=0;if(n[n0][m0]>n[n0-1][m0])f[n0][m0]=1+sear(n0-1,m0);if(n[n0][m0]>n[n0+1][m0])f[n0][m0]=1+sear(n0+1,m0)>f[n0][m0]?1+sear(n0+1,m0):f[n0][m0];if(n[n0][m0]>n[n0][m0-1])f[n0][m0]=1+sear(n0,m0-1)>f[n0][m0]?1+sear(n0,m0-1):f[n0][m0];if(n[n0][m0]>n[n0][m0+1])f[n0][m0]=1+sear(n0,m0+1)>f[n0][m0]?1+sear(n0,m0+1):f[n0][m0];f[n0][m0]=f[n0][m0]>1?f[n0][m0]:1;return f[n0][m0];
}
int main()
{cin>>r>>c;for(int i=1;i<=r;i++)for(int j=1;j<=c;j++){cin>>n[i][j];}memset(f,-1,sizeof(f));int max=0;for(int i=1;i<=r;i++)for(int j=1;j<=c;j++){int temp=sear(i,j);if(temp>max)max=temp;}cout<<max;return 0;
}