1. N = 3 # 物品数量
    2. W = 10 # 限制重量
    3. weights = [3, 4, 5] # 重量
    4. values = [4, 5, 6] # 价值
    5. F = [[0 for i in range(0, W + 1)] for _ in range(N)] # N 行, W 列
    6. print("0\t", *list(range(0, W + 1)), sep="\t")
    7. for k in range(0, N):
    8. for c in range(0, W + 1):
    9. if weights[k] > c:
    10. F[k][c] = F[k - 1][c]
    11. continue
    12. v1 = F[k - 1][c - weights[k]] + values[k]
    13. v2 = F[k - 1][c]
    14. F[k][c] = max(v1, v2)
    15. print(f"{k+1}-{weights[k]}-{values[k]}", *F[k], sep="\t")
    16. print(F[N - 1][W - 1])

    背包问题九讲V2.pdf