动态规划总结
动态规划算法#
动态规划算法,就是挖掘问题的条件,找到问题中各个状态的联系,通过列出状态转移方程,实现各个状态的计算。
动态规划解题思路#
动态规划解题的核心是找到状态转移方程,如何表示状态,如何求解状态就是DP问题的难点。下面给出动态规划解题的一般思路:
集合的强调#
这个思路特地强调了集合这个概念,与传统的DP思路略有不同,一些问题求解时可能不需要强调集合这个概念,就可以顺利得到状态转移方程,但有一些较为复杂的问题如果从集合的角度来思考,就更容易进行状态的划分与计算。
状态划分的技巧#
经验上讲,我们通常对达成状态的最后一步进行划分。
DP的难点#
上面,我们基于经验总结了DP问题的一般解决思路,但实际上都不会如此顺利,可能存在以下问题:
- 无法找到合适的状态表示方法
- 当前状态表示的方法无法进行有效的状态划分,无法计算
所以DP问题非常灵活,不存在模板,只能不断积累经验,碰到以上问题可以尝试着迁移其它问题的状态表示和状态划分方法。
动态规划的类型#
动态规划总结起来共以下几种类型:
- 线性DP
- 区间DP
- 计数类DP
- 数位统计DP
- 状态压缩DP
- 树形DP
每类问题的处理存在一些共性,但笼统的总结其特点没有意义,Blog中对这些类型的题目均有记录,时常翻看才能提高对DP的掌握。
动态规划的实现#
动态规划算法有两种实现:
- 循环实现各种状态的计算
- 记忆化搜索,递归的实现状态的计算
前者实现的速度一般略快于后者,但有时采用后者可以更加清晰简洁的实现算法,应该结合具体问题,选择合适的实现方式。
作者:Kong Aobo
出处:https://www.cnblogs.com/kongaobo/p/16963799.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!