动态规划不过多介绍,常用步骤:
- 算出题目所需要动态方程
- 方程组初始化(关键一步,好的初始化可以让后面的边界考虑更加省事)
- 设计算法并实现
- 返回值
易错点:
- 初始化时,初始化总需要赋值吧,那就会对数组的大小提出基本的要求,比如你要初始化第2列,那第二列总该存在吧, 但是题目中提供的数据所构造的数组可能就根本不存在第二列,所以一定要单独考虑只有一列数组的这种情况
- 另外就是虽然题目中肯定了结果不会超过某个大小, 但这不代表在算其它值的时候不会超过大小,要考虑数组的范围限制
- 三就是算法实现过程中考虑边界问题, 我一般会在初始化过程中就解决。比如留下一行或一列用来弥补算法过程中的越界问题。
- 原数组和构造的动态数组的小标可能不一致,因为数组从零开始编号。
- 在初始化数组时候可能已经有结果产生,返回结果时要考虑到初始化时的数据。
应用场景:
- 背包问题
- 字符串匹配算法