3.26 动态规划

  1. 斐波那契数列入手
    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

posted @ 2025-03-26 16:44  Toby0919  阅读(8)  评论(0)    收藏  举报