码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 动态规划总结篇!


    本文章转自代码随想录!

    如今动态规划已经讲解了42道经典题目,共50篇文章,是时候做一篇总结了。

    关于动态规划,在专题第一篇关于动态规划,你该了解这些!

    (opens new window)就说了动规五部曲,而且强调了五部对解动规题目至关重要!

    这是Carl做过一百多道动规题目总结出来的经验结晶啊,如果大家跟着「代码随想哦」刷过动规专题,一定会对这动规五部曲的作用感受极其深刻。

    动规五部曲分别为:

    1. 确定dp数组(dp table)以及下标的含义
    2. 确定递推公式
    3. dp数组如何初始化
    4. 确定遍历顺序
    5. 举例推导dp数组

    动规专题刚开始的时候,讲的题目比较简单,不少录友和我反应:这么简单的题目 讲的复杂了,不用那么多步骤分析,想出递推公式直接就AC这道题目了。

    Carl的观点一直都是 简单题是用来 巩固方法论的。 简单题目是可以靠感觉,但后面稍稍难一点的题目,估计感觉就不好使了。

    在动规专题讲解中,也充分体现出,这动规五部曲的重要性。

    还有不少录友对动规的理解是:递推公式是才是最难最重要的,只要想出递归公式,其他都好办。

    其实这么想的同学基本对动规理解的不到位的。

    动规五部曲里,哪一部没想清楚,这道题目基本就做不出来,即使做出来了也没有想清楚,而是朦朦胧胧的就把题目过了。

    • 如果想不清楚dp数组的具体含义,递归公式从何谈起,甚至初始化的时候就写错了。
    • 例如动态规划:不同路径还不够,要有障碍!
    • (opens new window) 在这道题目中,初始化才是重头戏
    • 如果看过背包系列,特别是完全背包,那么两层for循环先后顺序绝对可以搞懵很多人,反而递归公式是简单的。
    • 至于推导dp数组的重要性,动规专题里几乎每篇Carl都反复强调,当程序结果不对的时候,一定要自己推导公式,看看和程序打印的日志是否一样。

    好啦,我们再一起回顾一下,动态规划专题中我们都讲了哪些内容。

    # 动态规划基础

    • 关于动态规划,你该了解这些!
    • (opens new window)
    • 动态规划:斐波那契数
    • (opens new window)
    • 动态规划:爬楼梯
    • (opens new window)
    • 动态规划:使用最小花费爬楼梯
    • (opens new window)
    • 动态规划:不同路径
    • (opens new window)
    • 动态规划:不同路径还不够,要有障碍!
    • (opens new window)
    • 动态规划:整数拆分,你要怎么拆?
    • (opens new window)
    • 动态规划:不同的二叉搜索树
    • (opens new window)

    # 背包问题系列

    背包问题大纲

    • 动态规划:关于01背包问题,你该了解这些!
    • (opens new window)
    • 动态规划:关于01背包问题,你该了解这些!(滚动数组)
    • (opens new window)
    • 动态规划:分割等和子集可以用01背包!
    • (opens new window)
    • 动态规划:最后一块石头的重量 II
    • (opens new window)
    • 动态规划:目标和!
    • (opens new window)
    • 动态规划:一和零!
    • (opens new window)
    • 动态规划:关于完全背包,你该了解这些!
    • (opens new window)
    • 动态规划:给你一些零钱,你要怎么凑?
    • (opens new window)
    • 动态规划:Carl称它为排列总和!
    • (opens new window)
    • 动态规划:以前我没得选,现在我选择再爬一次!
    • (opens new window)
    • 动态规划: 给我个机会,我再兑换一次零钱
    • (opens new window)
    • 动态规划:一样的套路,再求一次完全平方数
    • (opens new window)
    • 动态规划:单词拆分
    • (opens new window)
    • 动态规划:关于多重背包,你该了解这些!
    • (opens new window)
    • 听说背包问题很难? 这篇总结篇来拯救你了
    • (opens new window)

    # 打家劫舍系列

    • 动态规划:开始打家劫舍!
    • (opens new window)
    • 动态规划:继续打家劫舍!
    • (opens new window)
    • 动态规划:还要打家劫舍!
    • (opens new window)

    # 股票系列

    股票问题总结

    • 动态规划:买卖股票的最佳时机
    • (opens new window)
    • 动态规划:本周我们都讲了这些(系列六)
    • (opens new window)
    • 动态规划:买卖股票的最佳时机II
    • (opens new window)
    • 动态规划:买卖股票的最佳时机III
    • (opens new window)
    • 动态规划:买卖股票的最佳时机IV
    • (opens new window)
    • 动态规划:最佳买卖股票时机含冷冻期
    • (opens new window)
    • 动态规划:本周我们都讲了这些(系列七)
    • (opens new window)
    • 动态规划:买卖股票的最佳时机含手续费
    • (opens new window)
    • 动态规划:股票系列总结篇
    • (opens new window)

    # 子序列系列

    • 动态规划:最长递增子序列
    • (opens new window)
    • 动态规划:最长连续递增序列
    • (opens new window)
    • 动态规划:最长重复子数组
    • (opens new window)
    • 动态规划:最长公共子序列
    • (opens new window)
    • 动态规划:不相交的线
    • (opens new window)
    • 动态规划:最大子序和
    • (opens new window)
    • 动态规划:判断子序列
    • (opens new window)
    • 动态规划:不同的子序列
    • (opens new window)
    • 动态规划:两个字符串的删除操作
    • (opens new window)
    • 动态规划:编辑距离
    • (opens new window)
    • 为了绝杀编辑距离,我做了三步铺垫,你都知道么?
    • (opens new window)
    • 动态规划:回文子串
    • (opens new window)
    • 动态规划:最长回文子序列
    • (opens new window)

    # 动规结束语

    关于动规,还有 树形DP(打家劫舍系列里有一道),数位DP,区间DP ,概率型DP,博弈型DP,状态压缩dp等等等,这些我就不去做讲解了,面试中出现的概率非常低。

    能把本篇中列举的题目都研究通透的话,你的动规水平就已经非常高了。 对付面试已经足够!

    这个图是 代码随想录知识星球

    (opens new window) 成员:青

    (opens new window),所画,总结的非常好,分享给大家。

    这应该是全网对动规最深刻的讲解系列了。

    其实大家去网上搜一搜也可以发现,能把动态规划讲清楚的资料挺少的,因为动规确实很难!要给别人讲清楚更难!

    《剑指offer》上 动规的题目很少,经典的算法书籍《算法4》 没有讲 动规,而《算法导论》讲的动规基本属于劝退级别的。

    讲清楚一道题容易,讲清楚两道题也容易,但把整个动态规划的各个分支讲清楚,每道题目讲通透,并用一套方法论把整个动规贯彻始终就非常难了。

  • 相关阅读:
    【论文阅读笔记】XLINK:淘宝短视频传输的多径QUIC协议
    FlinkModule加载HiveModule异常
    一文了解线上展厅如何制作,线上展厅制作需要注意什么
    C#/.NET/.NET Core优秀项目和框架精选(坑已挖,欢迎大家踊跃提交PR或者Issues中留言)
    Go中间件
    nodejs+vue+elementui在线日程管理系统php java python
    AI创作未来无人驾驶汽车设计的灵感和创意
    Spring的开幕式——Spring概述与设计思想
    socket相关命令
    计算机二级备考:Word 部分_1文件操作
  • 原文地址:https://blog.csdn.net/weixin_67972246/article/details/132843332
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | 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号