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