AcWing 901. 滑雪
原题链接
简单
作者:
桃乄酥
,
2024-10-03 21:19:52
,
所有人可见
,
阅读 1
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N=310;
int h[N][N],d[N][N];
int n,m;
bool check(int a,int b){
if(a>=0&&b>=0&&a<n&&b<m)return true;
return false;
}
int dp(int x,int y){
int &v=d[x][y];
int dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};
if(v!=-1)return v;
v=1;
for(int i=0;i<4;i++){
int a=x+dx[i],b=y+dy[i];
if(check(a,b)&&h[a][b]<h[x][y])v=max(v,dp(a,b)+1);
}
return v;
}
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)cin>>h[i][j];
}
memset(d,-1,sizeof(d));
int ans=0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++)ans=max(ans,dp(i,j));
}
cout<<ans<<endl;
return 0;
}