蓝桥备赛——动态规划解题套路框架

动态规划算法的基本套路框架:


首先,动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法,只不过在计算机问题上应用比较多,比如求最长递增子序列、最小编辑距离等。
既然是求最值,求解动态规划的核心问题是穷举。因为要求最值肯定要把所有可行的答案穷举出来,然后在其中找最值。记住,以后遇到求最值的问题首先思考如何穷举所有可能结果,这要练成条件反射。
动态规划这么简单,穷举就完事了?我看到的动态规划问题都很难啊!
首先,动态规划的穷举有点特别,因为这类问题存在“重叠子问题”,如果暴力穷举效率会极其低下,所以需要“备忘录”或者“DP table”来优化穷举过程,避免不必要的计算然后,动态规划问题一定会具备“最优子结构”,这样才能通过子问题的最值得到原问题的最值。
最后,虽然动态规划的核心思想就是穷举求最值,但是问题可以千变万化,穷举所有可行解其实并不是一件容易的事,只有列出正确的“状态转移方程”,才能正确地穷举以上提到的重叠子问题、最优子结构、状态转移方程就是动态规划三要素。三要素具体是什么意思下面会举例详解,但是在实际的算法问题中,写出状态转移方程是最困难的,这也就是为什么很多朋友觉得动态规划问题不好做的原因。一定要思考以下几点:
1这个问题的最简单情况是什么?
2这个问题有什么“状态”?
32第1章 核心套路篇
3对于每个“状态”,可以做出什么“选择”使得“状态”发生改变?
4如何定义dp数组/函数的含义来表现“状态”和“选择”?
说白了就是三点:状态、选择、dp 数组的定义。最后的代码可以套这个框架:



#初始化base c

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值