我想对 0-1背包问题进行一些改进。就像原始问题一样,每件商品都将具有权重和价值,而您正在使重量最小化和价值最大化。但是,每个项目都将是集合的一部分,例如Book1(value, weight, set).
我需要一种可以对这些进行排序的算法,给每个单独的集合设置一个上限。因此,例如,集合A为(Book1, Book2, Book3)
,而我只能
整个背包中A组的3件物品。
单个物品没有限制,所以我可以随心所欲地装上Book1's
,但我所接受的物品不能超过A套所允许的数量。整个背包有多套,每套有多个物品。
在尝试使用每个集合的解决方案整体解决问题之前,我尝试过单独解决每个集合,但显然给了我次优的解决方案。
我应该如何设计代码以使其产生最佳结果?