动态规划问题的python代码
时间: 2024-11-09 18:28:15 浏览: 19
动态规划通常用于解决优化问题,其中一个问题的例子是求解斐波那契数列的最快速度算法。这是一个简单的Python代码示例:
```python
def fibonacci_dp(n):
# 创建一个大小为 n+1 的列表来保存已经计算过的值
fib = [0] * (n + 1)
# 初始化前两个值
fib[0] = 0
if n >= 1:
fib[1] = 1
# 使用动态规划填充列表
for i in range(2, n + 1):
fib[i] = fib[i - 1] + fib[i - 2]
return fib[n] # 返回第 n 个斐波那契数
# 测试函数
n = 10
print("Fibonacci number at position", n, "is:", fibonacci_dp(n))
```
在这个例子中,我们创建了一个`fib`列表,它的元素表示斐波那契数列中的项。然后我们遍历从2到n的所有值,对于每个值i,将其作为索引,计算当前值等于前两个值之和(动态规划的核心思想:利用已经计算出的结果来避免重复计算)。最后返回所需的斐波那契数。
动态规划问题的共同特点包括:定义一个递推关系,维护一个表格来存储中间结果,并且通常有一个最优子结构(即子问题的最优解可以组合成原问题的最优解)。
阅读全文