问题是一个二维背包问题,但不是求二维背包的最优解。
问题是这样的,有多个背包和物品,每个物品有重量和体积两个维度,一个背包能够承受的重量和体积是有限的,问题就是判断所有的背包能不能背完所有的物品。
用二元组来描述背包和物品的重量和体积,比如 背包 1=(3,3),背包 2=(7,7),物品 1=(4,4),物品 2=(4,4),背包不能背完所有物品;但是假如 物品 1=(2,3),物品 2=(6,7) 就可以背完所有物品。
PS:自己有这样想过:对每一个背包求解二维背包问题,目的是尽量多地背更多的物品(这样可以用 DP ),可以得到每个背包背的物品数目的最优解;比如背包 1 求解得到背包 1 背的物品的最优解集 C1,背包 2 求解得到背包 2 背的物品的最优解集 C2...最后对这些解集求并集:C1 U C2 U ... ,如果并集可以得到整个物品,那就可以背完;但是这样每个背包就只会倾向于背重量和体积最小的物品,导致所有的背包都不会选择背大物品,最后导致失败。。比如背包 1=(3,3),背包 2=(3,3);物品 1=(1,1),物品 2=(1,1),物品 3=(2,2);利用这种想法就产生错误的答案。。。
请问大大们有没有高效的解法?还是必须要暴力搜索才能解决问题?暴力搜索的思路是啥?
最后:大家节日快乐!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.