我正在尝试解决一个我从未见过的背包问题。 在此变体中,我们有一个矢量v,该矢量由每件商品的每克值组成,并且每件商品的权重也有限,我们的目标是找到如果我们有一个大小为M的包装可以获取的最大值。 我尝试了贪婪的方法,但没有找到任何解决方案。我认为最困难的部分是在O(n)中执行此操作,因为我们不应该对任何内容进行排序。 有人有什么主意吗?
答案 0 :(得分:1)
如果每克的值具有相当窄的界限,则可以按每克的值在线性时间内对其进行计数,排序,基数排序或存储桶分类,然后按照最有价值的物质的顺序填充存储桶。合理的限制是什么意思?具体来说,我的意思是,与每种物质相比,渐近地有意义的“每克值”更少。