初识动态规划

1.能用动态规划解决的问题的特点:

  1)问题具有最有子结构性质。如果问题的最优解包含的子问题的解也是最优的,就称该问题有最优子结构性质

  2)无后效性。当前的若干状态值一旦确定,则此后过程的演变就之和这若干个状态的值有关,和之前是采取哪种手段或经过那条路径演变到当前的这若干个状态,没有关系。

2.思路:

  1)把原问题分解为若干个子问题,子问题和原问题形式相同或类似,只不过规模变小了。子问题解决了,原问题即可解决。子问题的解一旦求出就会保存,所以只需要求一次

  2)确定状态:整个问题的时间复杂度是状态数乘以计算每个状态所需时间,状态可以是一个数(如:数字三角形求最大和),也可以是一行(如:二维数组),也可以是其他形式。

  3)确定初始状态 / 边界状态的值。

  4)确定状态转移方程不同状态之间如何迁移

例题:最长上升子序列hdu1069,数字三角形

扫描二维码关注公众号,回复: 3522991 查看本文章

动规常见的两种形式:递归型(容易爆栈),递推型(可以用动态滚动数组,但要注意顺序,方向)

  

猜你喜欢

转载自www.cnblogs.com/lyqf/p/9770014.html
今日推荐