同一批物品,两种规则各是多少
三件 (重3值8)、(重4值9)、(重5值11),容量 10。一边每件只能拿一次,一边同一件能拿很多次。运行下面这段程序:
def knap1d(items, cap):
dp = [0] * (cap + 1)
for w, v in items:
for c in range(cap, w - 1, -1):
if dp[c - w] + v > dp[c]:
dp[c] = dp[c - w] + v
return dp
def knap_full(items, cap):
dp = [0] * (cap + 1)
for w, v in items:
for c in range(w, cap + 1):
if dp[c - w] + v > dp[c]:
dp[c] = dp[c - w] + v
return dp
print(str(knap1d([(3, 8), (4, 9), (5, 11)], 10)[10]) + "/" + str(knap_full([(3, 8), (4, 9), (5, 11)], 10)[10]))
全部评论