关键词
- 动态规划
- 网格
解决问题
主要解决在约定条件下优化某种指标问题。比如:背包问题、旅游行程最优化问题等。
注:动态规划并不是放之四海皆准的方案,比如,背包问题就不能解决只偷一半的情况。
算法时间复杂度
暂时没搞懂?
计算公式
每一个单元格的计算公式:当前单元格的价值 = (上一行对应列单元格的价值) 与 (当前商品的价值 + 剩余空间价值)
// 列如背包问题
// i -> 行
// j -> 列
// x -> 当前商品的重量
cell[i][j] = max(cell[i-1][j], cell[i-1][j-x])
练习
解题思路:
1、找出绘制表格的条件,比如:商品个数作为行,商品重量最小值作为列的刻度,限定条件作为最大的列(比如背包的容量)。
2、逐个单元格计算价值,使用上面的公式
3、所有的都计算完成之后,最后一个单元格,就是最优解。
小结
每一种动态规划解决方案都涉及到网格。所以,最重要的是要找到绘制网格的条件。