def knapsack(items, capacity):
table = [[0 for w in range(capacity + 1)] for j in xrange(len(items) + 1)]
for j in xrange(1, len(items) + 1):
item, wt, val = items[j-1]
for w in xrange(1, capacity + 1):
if wt > w:
table[j][w] = table[j-1][w]
else:
table[j][w] = max(table[j-1][w],
table[j-1][w-wt] + val)
result = []
w = capacity
for j in range(len(items), 0, -1):
was_added = table[j][w] != table[j-1][w]
if was_added:
item, wt, val = items[j-1]
result.append(items[j-1])
w -= wt
return result, sum(map(itemgetter(2), result))
me_at_the_zoo.py 文件源码
python
阅读 29
收藏 0
点赞 0
评论 0
评论列表
文章目录