forever_0805 @ 2019-10-12 18:26:46
#include<bits/stdc++.h>
using namespace std;
long long n,m,a[120][120],b[120][120],ans=-1,k;
long long dfs(long long x,long long y,long long z)
{
if (b[x][y]!=0) return b[x][y]+z;
if (x>1&&a[x][y]>a[x-1][y]) b[x][y]=max(dfs(x-1,y,z+1),b[x][y]);
if (x<n&&a[x][y]>a[x+1][y]) b[x][y]=max(dfs(x+1,y,z+1),b[x][y]);
if (y>1&&a[x][y]>a[x][y-1]) b[x][y]=max(dfs(x,y-1,z+1),b[x][y]);
if (y<m&&a[x][y]>a[x][y+1]) b[x][y]=max(dfs(x,y+1,z+1),b[x][y]);
return max(b[x][y],z);
}
int main()
{
cin>>n>>m;
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
cin>>a[i][j];
for (int i=1;i<=n;i++)
for (int j=1;j<=m;j++)
ans=max(ans,dfs(i,j,0));
cout<<ans+1;
return 0;
}
by 北美邹233 @ 2019-10-12 18:35:03
特判打表吧 (逃)