引例:楼梯有n个台阶,上楼可以一步上1阶,也可以一步2阶,一共有多少种上楼的方法?
解:f(1)=1,
f(2)=2,
f(n)=f(n-1)+f(n-2).
1.记忆化数组——避免重复计算;
2.递归定义——>递归公式
思路:先走一步,看剩下的。
递推公式: 初值:递归出口;
递推公式:递归体。
1.基础动态规划
例题1:1730 数字三角形问题 可以使用滚动数组
例题2:1299最长上升子序列
例题3:2080最长公共子序列问题
例题4:(注意大数模拟)最佳加法表达式
例题5:2755:神奇的口袋 注意初值的设置
例题6:0-1背包问题(POJ3624) 可以使用滚动数组
例题7:滑雪(百练1088)
例题8:POJ1390 方盒游戏
例题9:POJ2373 灌溉草场
2.状态压缩动态规划:
例题10:百练4124 海贼王之伟大航路
例题11:百练4149 课程大作业
例题12:POJ1185 炮兵阵地