AcWing 901. 滑雪
原题链接
简单
作者:
徐学神
,
2023-01-25 21:31:36
,
所有人可见
,
阅读 101
求赞!
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=310;
ll dx[4]= {1,-1,0,0};
ll dy[4]= {0,0,1,-1};
ll r,c,a[N][N],dp[N][N],ans;
void dfs(ll x,ll y) {
if(dp[x][y]) return;
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]) {
dfs(nx,ny);
dp[x][y]=max(dp[x][y],dp[nx][ny]+1);
}
}
}
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++) {
dfs(i,j);
ans=max(ans,dp[i][j]);
}
}
cout<<ans;
return 0;
}