01背包问题的Python解决方案

def knapsack(weights, values, capacity):

n = len(weights)

dp = [0] * (capacity + 1)

for i in range(1, n + 1):

for j in range(capacity, weights[i - 1] - 1, -1):

dp[j] = max(dp[j], dp[j - weights[i - 1]] + values[i - 1])

return dp[capacity]

weights = [2, 3, 4, 5]

values = [3, 4, 5, 6]

capacity = 8

print(knapsack(weights, values, capacity))

py 文件大小:1KB