滑雪 OJ3651

这个题我是不会用dp做,众所周知,能用记忆化搜索的题肯定能用dp,能用dp的不一定用记忆化搜索.

这个题正好用记忆化搜索可以过,欸嘿

#include<bits/stdc++.h> using namespace std; const int N=2020; int f[N][N],a[N][N],n,m,res;//a数组存储状态,f数组存储每条路最大的值 int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1}; int dfs(int x,int y) { if(f[x][y]) return f[x][y];//如果本来就存在,那就直接返回 for(int i=0;i<4;i++) { int x1=x+dx[i],y1=y+dy[i]; if(x1<=0||y1<=0||x1>n||y1>m) continue;//切记判断(呜呜) if(a[x][y]>a[x1][y1]) f[x][y]=max(f[x][y],dfs(x1,y1)+1);//看看走x1,y1这条路和现在的路哪个长; } return f[x][y];//返回 } int main() { cin>>n>>m; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) res=max(res,dfs(i,j));//每条都要搜一下,因为是记忆化搜索,所以有地方已经搜过了,不用担心复杂度 } cout<<res+1; return 0; }

 


__EOF__

本文作者Sakurajimamai
本文链接https://www.cnblogs.com/o-Sakurajimamai-o/p/17427972.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   o-Sakurajimamai-o  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
-- --
点击右上角即可分享
微信分享提示