蓝桥杯算法入门(Python) 课件 8-2动态规划的两种编码方法.pptxVIP

  • 1
  • 0
  • 约小于1千字
  • 约 6页
  • 2026-08-23 发布于山东
  • 举报

蓝桥杯算法入门(Python) 课件 8-2动态规划的两种编码方法.pptx

罗勇军

8.2动态规划的两种编码方法

蓝桥杯算法入门

DP的两种编程方法

DP的两种思路:

自顶向下(Top-Down,先大问题再小问题)

自下而上(Bottom-Up,先小问题再大问题)

DP的两种编程方法:

自顶向下:用带记忆化的递归编码

自下而上:用递推编码

两种方法的复杂度一样:每个子问题都计算一遍,而且只计算一遍。

(1)自顶向下与记忆化

自顶向下:先考虑大问题,再缩小到小问题,直到最小的问题无法再缩小。

由于递归很直接地体现了这种思路,所以也可以用递归来写DP的代码。

记忆化:为避免递归时重复计算子问题,可以在子问题得到解决时,就保存结果,再次需要这个结果时,直接返回保存的结果就行了。这种存储已经解决的子问题的结果的技术称为“记忆化”。

4

N=101

dp=[0]*N#记忆结果

deffib(n):

ifn==1orn==2:return1

ifdp[n]!=0:returndp[n]#已经计算过,直接返回结果,不再递归

dp[n]=fib(n-1)+fib(n-2)#递归计算,并记忆

returndp[n]

print(fib(100))#第100个数是:35422484

文档评论(0)

1亿VIP精品文档

相关文档