AcWing 901. 滑雪
原题链接
简单
作者:
徐学神
,
2023-01-25 21:31:36
,
所有人可见
,
阅读 15
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll dx[4]={1,-1,0,0};
ll dy[4]={0,0,1,-1};
ll r,c,a[310][310],dp[310][310],ans;
ll dfs(ll x,ll y) {
if(dp[x][y]>0) return dp[x][y];
dp[x][y]=1;
for(ll i=0;i<4;i++) {
ll nx=x+dx[i];
ll ny=y+dy[i];
if(nx>0 && nx<=r && ny>0 && ny<=c && a[nx][ny]<a[x][y]) {
dp[x][y]=max(dfs(nx,ny)+1,dp[x][y]);
}
}
return dp[x][y];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>r>>c;
for(ll i=1;i<=r;i++)
for(ll j=1;j<=c;j++)
cin>>a[i][j];
for(ll i=1;i<=r;i++) {
for(ll j=1;j<=c;j++) {
ans=max(dfs(i,j),ans);
}
}
cout<<ans;
return 0;
}