python 语言写一个背包问题代码
时间: 2024-02-02 14:02:54 浏览: 66
背包问题 python代码
5星 · 资源好评率100%
以下是一个背包问题的 Python 代码示例:
```
def knapsack(W, wt, val, n):
# 创建一个二维数组来存储最优解
K = [[0 for x in range(W+1)] for x in range(n+1)]
# 填充数组
for i in range(n+1):
for w in range(W+1):
if i == 0 or w == 0:
K[i][w] = 0
elif wt[i-1] <= w:
K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w])
else:
K[i][w] = K[i-1][w]
# 返回最后一个元素的最优解
return K[n][W]
# 测试
val = [60, 100, 120]
wt = [10, 20, 30]
W = 50
n = len(val)
print(knapsack(W, wt, val, n)) # 输出为 220
```
以上代码使用动态规划的方法来解决背包问题。它将所有可能的组合都计算出来,然后选择最优解。时间复杂度为O(nW),其中n是物品数量,W是背包的最大容量。
阅读全文