显示代码纯文本
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=510;
const int mv[4][2]={{0,-1},{0,1},{-1,0},{1,0}};
int N,M;
int Ans=0;
int A[maxn][maxn],f[maxn][maxn];
int dp(int x,int y)
{
if(f[x][y])return f[x][y];
f[x][y]=1;
for(int xx,yy,i=0;i<4;i++)
{
xx=x+mv[i][0],yy=y+mv[i][1];
if(A[x][y]>A[xx][yy]&&xx>0&&xx<=N&&yy>0&&yy<=M)
{
f[x][y]=max(f[x][y],1+dp(xx,yy));
}
}
return f[x][y];
}
int main()
{
freopen("shunzhi.in","r",stdin);
freopen("shunzhi.out","w",stdout);
scanf("%d%d",&N,&M);
for(int i=1;i<=N;i++)
for(int j=1;j<=M;j++)
scanf("%d",&A[i][j]);
for(int i=1;i<=N;i++)
{
for(int j=1;j<=M;j++)
Ans=max(Ans,dp(i,j));
}
printf("%d",Ans);
fclose(stdin);
fclose(stdout);
return 0;
}