Python 背包的变化
您的工作是将Python 背包的变化,python,algorithm,dynamic-programming,heuristics,Python,Algorithm,Dynamic Programming,Heuristics,您的工作是将n对象打包到盒子中。每个箱子可以有一个或两个物品,箱子中物品的总重量最大为x。箱子的最小数量是多少 我不知道这里的问题是背包还是别的什么 我有一个普通的背包 def背包(x,wt,值,n): 如果n==0或x==0: 返回0 如果(wt[n-1]>x): 返回背包(x,wt,值,n-1) 其他: 返回最大值(val[n-1]+背包(x-wt[n-1],wt,val,n-1),背包(x,wt,val,n-1)) 但我不知道如何修改这个?而且,我似乎在这里寻找最小值,而不是最大值。这也
n
对象打包到盒子中。每个箱子可以有一个或两个物品,箱子中物品的总重量最大为x
。箱子的最小数量是多少
我不知道这里的问题是背包还是别的什么
我有一个普通的背包
def背包(x,wt,值,n):
如果n==0或x==0:
返回0
如果(wt[n-1]>x):
返回背包(x,wt,值,n-1)
其他:
返回最大值(val[n-1]+背包(x-wt[n-1],wt,val,n-1),背包(x,wt,val,n-1))
但我不知道如何修改这个?而且,我似乎在这里寻找最小值,而不是最大值。这也可能是子集总和的一些变化吗?您不需要在这里背包,因为所有项目都必须打包。您也不需要使用装箱,因为您的箱子限制为1或2个对象。贪婪算法要简单得多。采取以下行动:
H
,最轻的物体为L
。如果H+L>x
,则没有其他对象H
可以打包,必须自行打包。否则,将H
和L
打包在一起会使盒子最小化,因为将L
与任何其他对象放在一起不会进一步减少盒子的数量(作为证据,请查看如果某个其他对象可以与L
打包,但不能与任何其他对象打包,则H
也不能与该其他对象打包)