3.26 动态规划
- 斐波那契数列入手
fib(n)=fib(n-1)+fib(n-2)
如果电脑只会算递归式

算法复杂度会很高。但是有些运算是没必要的,比如上图将fib(5)算了两遍)算法复杂度(2^n)
上面就是重叠子问题
1.1 例题(背包问题)

上面的数字表示做每个任务获得的钱
方法:选和不选
设一个量 opt(i)考虑一直到第i个任务的最优解,比如opt(8)就代表第八个任务选还是不选,如果选第八个任务,6和7就选不了了,所以OPT(8)=4+OPT(5)


出现了重叠的子问题(可以先保存某一个值,用数组)
1.2 实际例题(不相邻数字和最大)

有递归方程和递归出口
递归算法

非递归(用数组保留重叠的值,避免反复计算)

作业:homework-5

浙公网安备 33010602011771号