Skip to content
本站總訪問量
本站訪客數 人次

背包問題

python
def knapsack(items, m):
    n = len(items)
    dp = [[0] * (m + 1) for _ in range(n + 1)]

    for i in range(1, n + 1):
        for w in range(m + 1):
            weight, value = items[i - 1]
            if weight <= w:
                dp[i][w] = max(dp[i - 1][w], dp[i - 1][w - weight] + value)
            else:
                dp[i][w] = dp[i - 1][w]

    return dp[n][m]

items = [(3, 4), (4, 5), (7, 10), (3, 8), (2, 6)]
m = 10

max_value = knapsack(items, m)
print("最大價值:", max_value)

Contributors

The avatar of contributor named as lucashsu95 lucashsu95

Changelog