我有一个对象列表,bag
其中包含Quantity
,Volume
和weight
. 我想在用户输入上拆分或连接多个对象,这将是max weight
and max volume
,因此我们希望将列表bag
进一步拆分为更多bag
,以最佳方式由用户提供最大重量和最大体积,以便没有袋子的重量和体积离开了。到目前为止,我所取得的成就是,bag
根据volume
orweight
拆分,所以首先我根据weight
并且完全优化,但是当我应用相同volume
的算法来拆分拆分时并不是最好的。我应用的算法:
- 插入所有
bag
优先队列 - 取出每个数量重量最小的第一个元素并将其插入袋子中。
- 如果袋子已满,请创建一个新袋子,或者轮询下一个袋子并将其也插入。
- 如果一个包不能完全插入,则划分数量并插入可以插入的数量,其余的保留在优先队列中。
包类
public class bag {
int quantity;
int weightPerQty;
int volumePerQty;
}