问题描述

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更长。事实上,这是最
长的一条。输入输入的第一行表示区域的行数R和列数C(1 <= R,C <= 100)。下面是R
行,每行有C个整数,代表高度h,0<=h<=10000。输出输出最长区域的长度。 2

输入

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

输出

输出最长区域的长度。

样例输入

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

样例输出

25

解题思路来自北大郭炜

L(i,j)表示从点(i,j)出发的最长滑行长度。
一个点(i,j), 如果周围没有比它低的点,L(i,j) = 1
否则
递推公式: L(i,j) 等于(i,j)周围四个点中,比(i,j)低,且L值最大的那个点
的L值,再加1

解法1) “人人为我”式递推

L(i,j)表示从点(i,j)出发的最长滑行长度。
一个点(i,j), 如果周围没有比它低的点,L(i,j) = 1
将所有点按高度从小到大排序。每个点的 L 值都初始化为1
从小到大遍历所有的点。经过一个点(i,j)时,用递推公式求L(i,j)

解法2) “我为人人”式递推

L(i,j)表示从点(i,j)出发的最长滑行长度。
一个点(i,j), 如果周围没有比它低的点,L(i,j) = 1
将所有点按高度从小到大排序。每个点的 L 值都初始化为1
从小到大遍历所有的点。经过一个点(i,j)时,要更新他周围的,比它高的点
的L值。例如:
if H(i+1,j) > H(i,j) // H代表高度
L(i+1,j) = max(L(i+1,j),L(i,j)+1)

人人为我和我为人人的区别就是:
人人为我:从后往前推,所以再循环的时候是i-系列
我为人人:从前往后,更新每个点,所以是i+系列,且选择大的或者小的

滑雪(动态规划)--算法学习相关推荐

  1. 动态规划算法学习(一)爬楼梯和凑金额

    爬楼梯 每步可跨台阶:1,2,3 -该场景表示有序组合 台阶总数:15 求多少种跨法 ''' 倒推下,当我倒数第二步已经走了14.13或12步时,我最后一步就可以就可以走完15个台阶此时我15步的走法 ...

  2. 动态规划算法学习二:最长公共子序列

    文章目录 前言 一.问题描述 二.DP实现 1.最优子结构性质***** 2.状态表示***** 3.状态递归方程***** 4.计算最优值***** 5.代码实现:输出最长公共子序列 6.代码实现: ...

  3. 神奇的口袋(动态规划)--算法学习

    问题描述 有一个神奇的口袋,总的容积是40,用这个口袋可以变出 一些物品,这些物品的总体积必须是40.  John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品 的体积分别是a1,a2--a ...

  4. php算法学习,php算法学习之动态规划

    动态规划程序设计是对解最优化问题的一种途径.一种方法,最终问题的最优解可以通过前面子问题的最优解推导出来. 对于动态规划这个算法,自己学习的还不是很透彻,简单的总结自己学习的感受是: 动态规划思想中融 ...

  5. 图解算法学习笔记(九):动态规划

    目录 (1)背包问题 (2)最长公共子串 (3)小结 本章内容: 学习动态规划,它将问题分成小问题,并先着手解决这些小问题. 学习如何设计问题的动态规划解决方案. (1)背包问题 我们再看第八章的背包 ...

  6. 动态规划算法实验报告_强化学习之动态规划算法

    如今的强化学习研究大体分为了两个研究学派:一个是以Sutton,Sliver等人为代表的value-based学派,他们主要从值函数近似角度入手去研究强化学习,这也是强化学习早期最初发展起来时沿用的路 ...

  7. 学习进度2012-6-26(动态规划算法、Prim算法、Dijkstra算法)

    今天学习下三个算法:动态规划算法.Prim算法.Dijkstra算法,将自己理解的逻辑略作总结. 1.动态规划算法是选取两个字符串的最长子序列的解法作为切入点学习,在公司午休时间将代码写了下,初步测试 ...

  8. 强化学习原理及应用作业之动态规划算法【SYSU_2023SpringRL】

    强化学习原理及应用作业之动态规划算法[SYSU_2023SpringRL] 题目描述: 任务一:动态规划方法 一.策略迭代算法 1.代码 2.结果 3.思路讲解 策略评估 策略提升 二.价值迭代算法 ...

  9. Java算法学习:蓝桥杯——地宫寻宝(DFS+动态规划—记忆型递归)

    Java算法学习:蓝桥杯--地宫寻宝(DFS✖记忆型递归) 题目: 标题:地宫取宝X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签.地宫的入口在左上角,出 ...

最新文章

  1. bash 运行程序 下一步_怎样用 Bash 编程:语法和工具
  2. 2.19 总结-深度学习-Stanford吴恩达教授
  3. 对CPU的IO操作的理解
  4. Java的拓展包C3P0和DBUtil的使用
  5. 第九篇:Spring Boot整合Spring Data JPA_入门试炼04
  6. Activity工作流工作笔记001---快速上手_认识工作流
  7. weblogic mysql数据源配置文件_通过weblogic数据源实现配置oracle and mysql方法
  8. 凭什么说这门编程语言是下一代 Java?
  9. PHP设计模式——工厂方法
  10. FastJSON、Gson、Jackson(简单了解使用)
  11. Windows组策略
  12. vue slideup_像jQuery的slideUp / slideDown一样,但是对于Vue
  13. 解决Chrome无法访问此网站或无法显示此网页问题
  14. 2021-07-15 声音一些基本概念
  15. 更新数据时redis缓存与数据库数据不一致的问题
  16. NRF52832 ESB通信
  17. C++无法输出txt文件全部内容以及输出出现乱码的解决方法
  18. LU分解完成利用节点电压法的简易电路求解程序(二)
  19. string密钥转PrivateKey和PublicKey
  20. 光猫 虚拟服务器设置,光猫虚拟服务器设置

热门文章

  1. 移动端Monkey测试
  2. 墨羽卿画第二章第6节:修行路,修心途
  3. 笔记本调用自身摄像头问题大汇总(video0找不到,进程杀死,资源锁问题,响应延迟等等)
  4. 文字Loge 的设计
  5. OSChina 周日乱弹 —— 波赛冬之吻
  6. JCVideoPlayerStandard的视频播放
  7. 百度和360,你想去哪儿?
  8. C# 保护进程不被结束(源代码)防任务管理器结束进程
  9. 前后端分离,就浅浅的看看
  10. 天气微信小程序源码,附上线教程