Dynamic programming (DP) 通过计算每个子问题一次并重复使用结果来解决具有重叠子问题和最优子结构的问题。两种方式是 memoization(自顶向下)和 tabulation(自底向上)。
概念
朴素递归会指数级地重新计算相同的子问题。DP 将它们缓存起来,把指数级的工作量转化为多项式级。
Memoization(自顶向下)
python
functools lru_cache
():
n < :
n
fib(n - ) + fib(n - )
