滑雪
记忆化搜索+dp
#include <iostream>
#include <cstring>
using namespace std;
const int N = 305;
int tu[N][N];
int f[N][N];
int n,m;
int dx[]={0,0,1,-1};
int dy[]={1,-1,0,0};
int dfs(int x,int y){
int &v = f[x][y];
if(v!=-1) return v;
v = 1;
for(int i = 0;i<4;i++){
int a = x +dx[i], b = y+dy[i];
if(a>=1&&a<=n&&b>=1&&b<=m&&tu[a][b]<tu[x][y]){
v = max(v, dfs(a,b)+1);
}
}
return v;
}
int main() {
cin>>n>>m;
for(int i = 1;i<=n;i++){
for(int j = 1;j<=m;j++){
scanf("%d",&tu[i][j]);
}
}
int maxx = -0x3f;
memset(f,-1,sizeof f);
for(int i = 1;i<=n;i++)
for(int j = 1;j<=m;j++)
maxx = max(maxx,dfs(i,j));
cout<<maxx;
return 0;
}
博客围绕滑雪问题展开,介绍了采用记忆化搜索与动态规划(DP)相结合的解决方法,属于算法领域,运用C++语言实现图论相关算法。
2万+

被折叠的 条评论
为什么被折叠?



