从wiki上找到动态规划的一般步骤:
- 最优子结构性质。如果问题的最优解所包含的子问题的解也是最优的,我们就称该问题具有最优子结构性质(即满足最优化原理)。最优子结构性质为动态规划算法解决问题提供了重要线索。
- 子问题重叠性质。子问题重叠性质是指在用递归算法自顶向下对问题进行求解时,每次产生的子问题并不总是新问题,有些子问题会被重复计算多次。动态规划算法正是利用了这种子问题的重叠性质,对每一个子问题只计算一次,然后将其计算结果保存在一个表格中,当再次需要计算已经计算过的子问题时,只是在表格中简单地查看一下结果,从而获得较高的解题效率。
利用子问题重叠性性质来对问题进行化简,可以提高对对数据利用率,加快程序运行速度,下去可以好好考虑动态规划的优化问题,他既然是从子问题重叠来调用,那么在调用的过程中,可以考虑进一步的优化,比如合理使用递归的思想,贪婪的思想,使程序运行速度更快,我个人在动态规划还这方面要多加考虑,这是个不错的算法