名师广场

登录
工作室首页 > 话题列表 > 话题详情

只看楼主 #每日一题#-基础-044使用最小花费爬楼梯

  • 楼主

    顾杭林

    话题:38

    精华:0

    积分:194

    阅读:543 回复:7 2022-04-14 08:45:55

  • 2楼

    王泽宇

    话题:25

    精华:0

    积分:107

    image.png

    image.png

    2022-04-14 09:03:05

  • 3楼

    王泽宇

    话题:25

    精华:0

    积分:107

    题解:

    lADPJvgFTxBcWoTNBQDNA9A_976_1280.jpg

    2022-04-14 15:19:21

  • 4楼

    颜妙林

    话题:35

    精华:0

    积分:305

    截图_20222415082405.png

    2022-04-15 08:20:10

  • 5楼

    颜妙林

    话题:35

    精华:0

    积分:305

    截图_20222415082419.png

    2022-04-15 08:20:23

  • 6楼

    颜妙林

    话题:35

    精华:0

    积分:305

    截图_20222415082435.png

    2022-04-15 08:20:41

  • 7楼

    颜妙林

    话题:35

    精华:0

    积分:305

    截图_20222515082502.png

    2022-04-15 08:21:05

  • 8楼

    王泽宇

    话题:25

    精华:0

    积分:107

          这是一个不属于动态规划的递归实现:

    image.png

          为什么不属于动态规划呢?因为在上面的这个算法中,如果我4-1做过第3级台阶,已经有第3级台阶的最小状态了,当递归到5-2的时候找到第3级台阶还是会继续往下搜,搜到边界值(0或1)为止,那就会重复计算了。

          我们再来思考动态规划的定义:对于之前的状态不需要重复计算。所以只要用一个列表,在第一次算过第3级台阶的时候,就把它的最小花费存储下来就可以了。因为我们的递归是自顶向下搜索、自底向上回溯的,所以当第i级台阶已经被赋值过一次时,就证明这是之前已经的状态了。

          我们来看使用动态规划能节省多少时间:

          这是图1的算法执行10000次的时间:

    image.png

          这是动态规划的算法执行10000次的时间:

    image.png

          差了近乎100倍,这还是在数据量仅仅是10的情况下。所以说动态规划是一个非常精妙的优化算法。


          这是动态规划的递归实现:

    image.png

    2022-04-15 09:53:34

说:

还能输入140发送

关闭

扫码登录更安全

空间登录

手机扫码,安全登录

二维码已失效 请点击刷新
请打开人人通空间APP扫一扫登录

手机扫码,安全登录

扫描成功!

请在手机上确认登录

取消二维码登录

二维码

名师工作室移动端

  • 扫一扫,直接在手机上打开
  • 随时随地使用工作室
分享
回到顶部