0-1背包问题:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。
这里记录下python的模板,第一段函数dp是用两个数组代替通常的表格法,第二段函数dp2用一个数组,更加的简洁,但是需要从后面开始更新数组。
def dp(weight, count, weights, costs): # 两个数组
"""
动态规划模板,时间复杂度O(weight * count), 空间复杂度O(weight)
:param weight: 背包最大能装的重量
:param count: 物品数量
:param weights: 每件物品的重量
:param costs: 每件物品的价值
:return: 背包装下的最大价值
"""
preline, curline = [0] * (weight + 1), [0] * (weight + 1