AcWing 901. 滑雪
原题链接
简单
作者:
zqk
,
2025-04-03 13:34:15
· 河南
,
所有人可见
,
阅读 3
算法1
O(n∗m)
C++ 代码
#include<iostream>
#define N 310
using namespace std;
int dx[]={0,0,-1,1};
int dy[]={1,-1,0,0};
int st[N][N];
int a[N][N];
int dp[N][N];
int r,c;
int dfs(int x,int y){
if(st[x][y]){
return dp[x][y];
}else{
st[x][y]=true;
}
dp[x][y]=1;
for(int i=0;i<4;++i){
int nx=x+dx[i];
int ny=y+dy[i];
if(nx>=1&&nx<=r&&ny>=1&&ny<=c&&a[x][y]>a[nx][ny]){
dp[x][y]=max(dp[x][y],dfs(nx,ny)+1);
}
}
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];
}
}
int res=0;
for(int i=1;i<=r;++i){
for(int j=1;j<=c;++j){
res=max(res,dfs(i,j));
}
}
cout<<res<<endl;
return 0;
}