编辑代码

def knapsack01(weights, values, W):
    N = len(weights)
    dp = [[0 for _ in range(W + 1)] for _ in range(N + 1)]

    for i in range(1, N + 1):
        for j in range(1, W + 1):
            if j >= weights[i-1]:
                dp[i][j] = max(dp[i-1][j], dp[i-1][j-weights[i-1]] + values[i-1])
            else:
                dp[i][j] = dp[i-1][j]
    return dp[N][W]

# 示例
weights = [1, 2, 3]
values = [6, 10, 12]
W = 5
print(knapsack01(weights, values, W))