01背包问题穷举法python代码是什么
时间: 2024-09-12 16:14:40 浏览: 46
C++背包问题穷举回溯备忘录动态规划.zip
01背包问题是一个经典的动态规划问题,在Python中可以使用穷举法来解决,虽然不是最高效的算法,但简单易懂。以下是基于物品的价值(v[i])和重量(w[i]),以及背包容量(W)的一个简化版的穷举法代码示例:
```python
def knapsack_01_brute_force(items, W):
n = len(items) # 物品数量
dp = [[0 for _ in range(W+1)] for _ in range(n+1)] # 初始化二维数组
for i in range(1, n+1): # 遍历所有物品
for w in range(1, W+1): # 背包剩余容量范围
if items[i-1][1] <= w: # 如果物品能完全装入当前背包
dp[i][w] = max(dp[i-1][w], dp[i-1][w-items[i-1][1]] + items[i-1][0]) # 选择或不选择该物品
else:
dp[i][w] = dp[i-1][w] # 无法装下,所以选择上一物品
return dp[n][W] # 返回最大价值
# 使用示例
items = [(60, 10), (100, 20), (120, 30)]
W = 50
max_value = knapsack_01_brute_force(items, W)
print(f"最大价值为: {max_value}")
阅读全文