码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 动态规划之空间压缩技巧


    不管是哪个动态规划,如果依赖的只是相邻位置,那么就可以使用空间压缩方法。

    • 情况一:(i,j) 位置依赖于 (i-1,j) 和 (i,j-1),则从左往右 求 (题目"动态规划:路径最小累加和(经典)" 即使用的这种压缩技巧)
      请添加图片描述

    • 情况二:(i,j) 位置依赖于 (i-1,j-1) 和(i-1,j),则从右往左 求
      如果某个动态规划中的某个位置依赖左上角的值和正上方的值,也能做数组压缩。
      请添加图片描述
      这种情况的第0行都能由自身得到,因为第0行没有左上角和上方位置,类似于base case,其他位置就 从右往左 求,值没有更新的时候代表上一行的值,更新后代表这一行的值。

    不管什么动态规划问题,只要满足这种依赖关系,都可以进行数组压缩。

    • 情况三:(i,j) 位置依赖于(i-1,j-1)、(i-1,j) 和(i,j-1),增加一个临时变量,并从左往右求
      请添加图片描述
      第 0 行的值都能通过0行左边的值得到,因为第 0 行没有左上角和正上方。第 0 列的值通过第0列的上方的值得到,因为该列没有左边和左上角的值。

      假设第0行arr[a, b, c],那么第1行的第0列的值a'可以通过a 得到,但是在将a' 填回该一维数组之前,用一个变量t记录下原始的a,此时一维数组中的值为[a',b,c],而t = a,则b' 位置依赖的三个位置的值都已经得到了: 请添加图片描述

    如果脑海中的 dp 表是 n(行) * m(列) 大小的,就需要准备一个 m 个元素空间的数组,这种情况下,如果 100w * 4,那只需要一个长度为 4 的数组即可,执行100w次,竖向更新,很好;但是如果是 4 * 100w 的矩阵呢?仍然只需要准备一个长度为 4 的数组,横向更新(如下图所示)。
    请添加图片描述
    这种推导方式和上文描述的一样,可以先得到第 0 列的值,通过第 0 列推导出第 1 列的值,然后按照依赖关系推导其他普遍位置,是完全可以的。

    总结来说就是看如果行比较小,则一列一列地更新;如果列比较小,就一行一行地更新。

  • 相关阅读:
    WEB前端网页设计 HTML CSS 网页设计参数 - 列表、鼠标、块级元素
    【电路笔记】-平均电压和均方根电压(RMS Voltage)
    [VC++]圆形进度条
    Word处理控件Aspose.Words功能演示:在 Java 中将 Word 文档转换为 EPUB
    比较 内核 读写锁与顺序锁, RCU
    测试工程师必备的数据库知识
    性能测试之负载测试PingCode内容分享~
    stm32cubemx hal学习记录:DAC 三角波
    掘根宝典之C语言字符串输出函数(puts(),fputs())
    常用排序算法
  • 原文地址:https://blog.csdn.net/u011386173/article/details/127432482
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号