01背包问题Python
时间: 2023-07-07 07:11:56 浏览: 157
好的,下面是一个简单的 01 背包问题的 Python 代码示例:
```python
def knapsack(W, wt, val, n):
"""
:param W: 背包容量
:param wt: 物品重量列表
:param val: 物品价值列表
:param n: 物品数量
:return: 最大价值
"""
# 初始化 dp 数组
dp = [[0 for x in range(W + 1)] for x in range(n + 1)]
# 逐个考虑物品
for i in range(1, n + 1):
for w in range(1, W + 1):
# 如果当前物品重量大于背包容量,则无法放入该物品
if wt[i - 1] > w:
dp[i][w] = dp[i - 1][w]
# 否则,比较放入和不放入该物品的价值,取较大值
else:
dp[i][w] = max(val[i - 1] + dp[i - 1][w - wt[i - 1]], dp[i - 1][w])
return dp[n][W]
```
使用方法如下:
```python
W = 50
wt = [10, 20, 30]
val = [60, 100, 120]
n = len(val)
print(knapsack(W, wt, val, n)) # 输出 220
```
以上就是一个简单的 01 背包问题的 Python 实现,希望对你有所帮助。
阅读全文