在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i]
原始背包问题考虑的是价值最大化,而这个背包考虑的是重量最大化,没有价值。 我们可以将dp的定义改为,前i个物品能不能装满j。在初始问题中是装下,这次是装满。这样的话,就不可能存在不拿这个选项,如果不拿,说明要么装不下,要么装不满。
class Solution:
"""
@param m: An integer m denotes the size of a backpack
@param A: Given n items with size A[i]
@return: The maximum size
"""
def backPack(self, m, A):
# write your code
# dp表示第i个物品能否装满j
dp = [0 for _ in range(m+1)]
dp[0] = 1
result = 0
for a in A:
for i in range(m, a-