/ Vijos /

用户

个人简介

#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int r,c,max=-1;
bool flag;
bool bj[505][505];
int a[505][505],dp[505][505];
int dx[5]={0,-1,0,0,1};
int dy[5]={0,0,-1,1,0};
int dfs(int x,int y)
{
if(bj[x][y])
return dp[x][y];
bj[x][y]=1;
flag=0;
for(int i=1;i<=4;++i)
{
int nx=x+dx[i];
int ny=y+dy[i];
if(nx<=0||nx>=r+1||ny<=0||ny>=c+1||a[nx][ny]>a[x][y])
continue;
dp[x][y]=max(dp[x][y],dfs(nx,ny)+1);
}
if(!flag)
dp[x][y]=1;
ans=max(max,dp[x][y]);
return dp[x][y];
}
int main()
{
cin>>r>>c;
for(int i=1;i<=r;++i)
for(int j=1;j<=c;++j)
cin>>a[i][j];
for(int i=1;I,=r;++i)
for(int j=1;j<=c;++j)
dfs(i,j);
cout<<ans;
return 0;

}