编辑代码

def knapsack(weight, value, W):
    n = len(weight)
    dp = [[0] * (W+1) for _ in range(n+1)]
    
    for i in range(1, n+1):
        for j in range(1, W+1):
            if weight[i-1] <= j:
                dp[i][j] = max(dp[i-1][j], dp[i-1][j-weight[i-1]] + value[i-1])
            else:
                dp[i][j] = dp[i-1][j]
    
    return dp[n][W]

weight = [2, 3, 4, 5]
value = [3, 4, 5, 6]
W = 8

max_value = knapsack(weight, value, W)
print("Maximum value:", max_value)