6.2 动态规划解题的一般思路

人人为我,就是已知指向人人,未知指向我,由已知推向未知的情况 

 来自算法图解:

背包问题:

最长公共子串:

最长公共子序列:

1. 动态规划可帮助你在给定约束条件下找到最优解。在背包问题中,你必须在背包容量给定的情况下,偷到价值最高的商品。

2. 在问题分解为彼此独立且离散的子问题时,就可使用动态规划来解决。

3. 每种动态规划解决方案都涉及到网格。

4. 单元格中的值通常就是你要优化的值。在前面的背包问题中,单元格中的值为商品的价值。

5. 每个单元格都是一个子问题,因此你应考虑如何将问题分成子问题,这有助于你找出网格的坐标轴。

小结:

 需要在给定约束条件下优化某种指标时,动态规划很有用。

 问题可分解为离散子问题(无后效性)时,可使用动态规划来解决。

 每种动态规划解决方案都涉及网格。

 单元格中的值通常就是你要优化的值。

 每个单元格都是一个子问题,因此你需要考虑如何将问题分解为子问题。

 没有放之四海皆准的计算动态规划解决方案的公式。

猜你喜欢

转载自blog.csdn.net/yanyanwenmeng/article/details/83500740