滑雪
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 106415   Accepted: 40499

Description

Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子

 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

输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R行,每行有C个整数,代表高度h,0<=h<=10000。

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题目大意就不说了,中文题目都看得懂。直接说解题思路吧,开始我就想用深搜,结果成功的超时了,因为计算了太多重复的值了。然后看题解才知道要用记忆搜索,就是要用一个二维数组记录下起始点到当前点的最大距离。然后深搜的话,就和普通的深搜一样,只不过这里我们要采用以下动态规划的思想,判断当前点高度是否比周围的点的高度高,如果是的话就取它周围距离起始点距离点最远再加一就行了,这样我们就可以求出从下往上最远的距离,即从上往下最远的距离。附上AC代码:
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<string.h>
 4 using namespace std;
 5 int n,m;
 6 int map[105][105];
 7 int dis[105][105];
 8 int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}};
 9
10 int dfs(int x,int y)
11 {
12     int res=1;
13     if(dis[x][y]!=-1) return dis[x][y];  //记录起始点到当前点的最远距离
14     for(int i=0;i<4;i++)
15     {
16         int dx=x+dir[i][0];
17         int dy=y+dir[i][1];
18         if(dx>0&&dx<=n&&dy>0&&dy<=m&&map[dx][dy]<map[x][y])
19         {
20             res=max(res,dfs(dx,dy)+1);   //取周围距离起点最远距离点加一
21         }
22     }
23     dis[x][y]=res; //记录距离
24     return res;
25 }
26
27 int main()
28 {
29     cin>>n>>m;
30     memset(dis,-1,sizeof(dis));
31     for(int i=1;i<=n;i++){
32         for(int j=1;j<=m;j++){
33             cin>>map[i][j];
34         }
35     }
36     int ans=0;
37     for(int i=1;i<=n;i++)
38     {
39         for(int j=1;j<=m;j++)
40         {
41             ans=max(ans,dfs(i,j));  //比较从哪个点作为起始点得到的最远距离最长
42         }
43     }
44     cout<<ans<<endl;
45     return 0;
46 }

转载于:https://www.cnblogs.com/zjl192628928/p/9334391.html

POJ1088(记忆搜索加dp)相关推荐

  1. [蓝桥杯][算法提高VIP]夺宝奇兵(记忆化搜索||DP)

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  2. POJ1088 滑雪题解+HDU 1078(记忆化搜索DP)

    Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道 ...

  3. BZOJ3769:BST again(记忆化搜索DP)

    Description 求有多少棵大小为n的深度为h的二叉树.(树根深度为0:左右子树有别:答案对1000000007取模) Input 第一行一个整数T,表示数据组数. 以下T行,每行2个整数n和h ...

  4. 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐下象棋(记忆化搜索dp,dfs)

    题干: 小乐乐一天天就知道玩,这一天又想玩象棋. 我们都知道马走日. 现在给定一个棋盘,大小是n*m,把棋盘放在第一象限,棋盘的左下角是(0,0),右上角是(n - 1, m - 1); 小乐乐想知道 ...

  5. LeetCode 87. 扰乱字符串(记忆化递归 / DP)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 动态规划 1. 题目 给定一个字符串 s1,我们可以把它递归地分割成两个非空子字符串,从而将其表示为二叉树. 下图是字符串 s1 = &q ...

  6. LeetCode 514. 自由之路(记忆化递归 / DP)

    文章目录 1. 题目 2. 解题 1. 题目 电子游戏"辐射4"中,任务"通向自由"要求玩家到达名为"Freedom Trail Ring" ...

  7. UVA10739 String to Palindrome【记忆化搜索+DP】

    In this problem you are asked to convert a string into a palindrome with minimum number of operation ...

  8. 【记忆化递归+DP】LeetCode 139. Word Break

    LeetCode 139. Word Break Solution1: 记忆化递归的典型套路题 参考网址:https://zxi.mytechroad.com/blog/leetcode/leetco ...

  9. 【DFS + 记忆化递归 + DP】LeetCode 91. Decode Ways

    LeetCode 91. Decode Ways Solution1:我的答案 还是记录一下,最容易想到的是DFS,但是在第223/238个case上就超时了... class Solution { ...

最新文章

  1. 如何在Keras中检查深度学习模型(翻译)
  2. 简单看看PageHelper的配置
  3. 在WebIDE里导入SAP Fiori应用
  4. P5048-[Ynoi2019 模拟赛]Yuno loves sqrt technology III【分块】
  5. Log4j线程死锁–案例研究
  6. Python让繁琐工作自动化——chapter12 处理Excel电子表格
  7. 小程序开发,不现实用户的头像!
  8. 动态规划实战8 leetcode-53. Maximum Subarray
  9. Cesium专栏-气象要素(温度、降水)色斑图制作
  10. 进程的创建——fork函数
  11. 【ANSYS命令流】Workbench中施加流体渗透压力载荷(超详细)
  12. html消除表格线,html5 消除表格线
  13. 对PNG图像进行编码 Encoding the PNG image
  14. DFU u-boot搭建
  15. 【BZOJ2144】跳跳棋
  16. Spring MVC -- xxx conflicts with existing xxx
  17. Zip、Rar文件解压
  18. python画螺旋状图形教程_Python实现的绘制三维双螺旋线图形功能示例
  19. PHP字符串计算函数
  20. 基于MATLAB的简单手势识别

热门文章

  1. dev c++代码自动补全_python3代码如何自动补全?
  2. jpg图片已损坏怎么修复_JPG图片怎么转成PDF?这两个方法你能用上
  3. Python入门--else语句
  4. Spring框架零基础学习(一):IOC|DI、AOP
  5. 学生信息管理系统(c++源代码实现)
  6. Wannafly挑战赛27: C. 蓝魔法师(树形DP)
  7. jquery创建添加append、prepend、appendTo、prependTo、after、insertAfter、before、insertBefore
  8. 1208: [HNOI2004]宠物收养所
  9. 设计模式01-模板设计模式
  10. openlayers5学习笔记-001