POJ_1088 滑雪(记忆型DP+DFS)
Description
1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...-3-2-1更长。事实上,这是最长的一条。
Input
Output
Sample Input
5 5 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 23 22 21 8 13 12 11 10 9
Sample Output
25
代码如下:
1 #include <cstdio> 2 #include <cstring> 3 int c,r; 4 int zf[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; 5 int snow[110][110]; 6 int D[110][110]; 7 int dfs(int x,int y){ 8 if(D[x][y]!=0){ 9 return D[x][y]; 10 } 11 int maxx=1,x1,y1,kk; 12 for(int i=0;i<4;i++){ 13 x1=x+zf[i][0]; 14 y1=y+zf[i][1]; 15 if(x1 >= 0 && x1 < r && y1 >= 0 && y1 < c && snow[x][y] > snow[x1][y1]){ 16 kk=dfs(x1,y1)+1; 17 if(kk>maxx){ 18 maxx=kk; 19 } 20 } 21 } 22 return maxx; 23 } 24 int main() 25 { 26 int ans=0; 27 scanf("%d %d",&r,&c); 28 for(int i=0;i<r;i++){ 29 for(int j=0;j<c;j++){ 30 scanf("%d",&snow[i][j]); 31 } 32 } 33 memset(D,0,sizeof(D)); 34 for(int i=0;i<r;i++){ 35 for(int j=0;j<c;j++){ 36 D[i][j]=dfs(i,j); 37 if(D[i][j] > ans){ 38 ans = D[i][j]; 39 } 40 } 41 } 42 printf("%d\n",ans); 43 44 return 0; 45 }
思路解析:
我真的要哭了!这题9点写完的。检查到10点。然后又找安安和爽老板帮我看。结果最后是主函数的i++写成了r++!!!我去年买了个表啊!!
咳咳,言归正传,这题用记忆型DP,D数组储存的是在某个点的最大高度。所以在DFS函数最前面来判断,这样调用直接节省了很多时间,不会超时。然后再利用DFS深搜,搜到答案返回,更新最大值,搜到最后,输出最大值,大功告成。
转载于:https://www.cnblogs.com/xzt6/p/5751286.html
POJ_1088 滑雪(记忆型DP+DFS)相关推荐
- Java算法学习:蓝桥杯——地宫寻宝(DFS+动态规划—记忆型递归)
Java算法学习:蓝桥杯--地宫寻宝(DFS✖记忆型递归) 题目: 标题:地宫取宝X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.地宫的入口在左上角,出 ...
- 记忆化搜索(DFS+DP) URAL 1223 Chernobyl’ Eagle on a Roof
题目传送门 1 /* 2 记忆化搜索(DFS+DP):dp[x][y] 表示x个蛋,在y楼扔后所需要的实验次数 3 ans = min (ans, max (dp[x][y-i], dp[x-1][i ...
- 钢条切割(记忆型递归)dp
题目: Serling公司购买长钢条,将其切割为短钢条出售.切割工序本身没有成本支出.公司管理层希望知道最佳的切割方案. 假定我们知道Serling公司出售一段长为i英寸的钢条的价格为pi(i=1,2 ...
- 蓝桥杯:生命之树【树型dp】
之前本菜还没学树型dp的时候,下意识地认为这个东西很难,感觉这个东西结合了搜索+dp这两座算法界的大山必定很难,但万万没想到啊,这个东西很像我之前讲的记忆化搜索,甚至我认为,记忆化搜索的一个作用就是将 ...
- 其他OJ 树型DP 选课
在朱全民的PPT介绍的一个树型DP经典题,<选课>,中文题目,不结束 找了很久找到了可以提交的OJ,重庆八中 http://www.cqoi.net:2012/JudgeOnline/pr ...
- 【树型DP】加分二叉树
问题 b: [树型DP]加分二叉树 时间限制: 1 Sec 内存限制: 64 MB 提交: 8 解决: 6 [提交] [状态] [讨论版] [命题人:admin] 题目描述 科技忽略了过程就是魔法 ...
- 二叉苹果树(树型DP+背包)
二叉苹果树 有一棵苹果树,如果树枝有分叉,一定是分2叉(就是说没有只有1个儿子的结点).这棵树共有N个结点(叶子点或者树枝分叉点),编号为1-N,树根编号一定是1. 我们用一根树枝两端连接的结点的编号 ...
- POJ3342 Party at Hali-Bula(树型DP求最大独立集+唯一解判断)
题意: 公司参加聚会,要求员工不能和他的上司同时参加,求最多能参加几个人并且判断解是否唯一. 要点: 树型DP的经典题,用dp[u][1]表示选取u的最大值,dp[u][0]表示不选取u的最大值,容易 ...
- 虚树+树型DP SDOI2011消耗战
<虚树+树型DP> SDOI2011消耗战 #include <iostream> #include <cstdio> #include <cstring&g ...
最新文章
- 操作系统实验之作业调度算法
- oracle无法删除app文件,DG-主库删除日志备库无法应用-求解决办法
- 内置函数---filter和map
- 二维数组各行分别求和_【PyTorch入门】之十分钟看懂二维卷积层的运算、实现及应用...
- Properties文件的XML格式
- instagram技术_Instagram9位科技女孩进行技术采访的主要技巧
- Spark的枚举类型实例!scala的枚举。
- LVS_Cluster
- AD9361 补充(中)
- 火狐浏览器不支持html5,解决火狐浏览器扩展版本不兼容问题
- 总结jQuery中的DOM节点属性
- 通信专业实务(三)——接入网
- 端云协同,打造更易用的AI计算平台
- PC端滚动加载更多的实现方法
- norflash的操作
- 【ORACLE】21版本新特性之SQL宏(SQL MACROS)的分析
- selenium操作无界面chrome浏览器
- 将markdown标记换成html标签,Markdown常用标记
- 深度学习环境配置之windows下的torch-gpu=1.7.1(亲测有效)
- 软件测试技术工程师面试这些离职原因不能说!