算法图解--学习笔记(动态规划)

77 阅读1分钟

关键词

  • 动态规划
  • 网格

解决问题

主要解决在约定条件下优化某种指标问题。比如:背包问题、旅游行程最优化问题等。

注:动态规划并不是放之四海皆准的方案,比如,背包问题就不能解决只偷一半的情况。

算法时间复杂度

暂时没搞懂?

计算公式

每一个单元格的计算公式:当前单元格的价值 = (上一行对应列单元格的价值) 与 (当前商品的价值 + 剩余空间价值)

// 列如背包问题
// i -> 行
// j -> 列
// x -> 当前商品的重量
cell[i][j] = max(cell[i-1][j], cell[i-1][j-x])

练习

解题思路:

1、找出绘制表格的条件,比如:商品个数作为行,商品重量最小值作为列的刻度,限定条件作为最大的列(比如背包的容量)。

2、逐个单元格计算价值,使用上面的公式

3、所有的都计算完成之后,最后一个单元格,就是最优解。

小结

每一种动态规划解决方案都涉及到网格。所以,最重要的是要找到绘制网格的条件。