算法/贪心算法/BinPacking一维装箱问题

问题描述

We have a number of bins each with a capacity of 1, and we have a set of objects all with different sizes, s1,s2,…,sn between 0 and 1. What is the fewest number of bins that would be needed to store all of the objects?

Instance: 0.5, 0.7, 0.3, 0.9, 0.6, 0.8, 0.1, 0.4, 0.2, 0.5

一维装箱问题只考虑一个因素,比如重量、体积、长度等。


思路一

要求解箱子数目,也就是说不能确定会占用多少个箱子,因此采用链表的形式来存储箱子信息。
我们先将物品由大到小进行排序,每次拿出一个物品从第一个箱子开始遍历:如果可以放下,那么重新拿出一个物品在从第一个开始遍历;如果放不下,就开一个新箱子,将这个物品放在里面。


思路二

还是先将物品由大到小进行排序,每次拿出一个箱子遍历物品,遍历完一次物品就表示一个箱子装满了,然后再开下一个箱子,直到所有的物品装完为止。对于上述题目,既然只需要求出所需箱子的数量,个人认为就没必要用更复杂的数据结构了。
初学算法,这个完全是自己写的,感觉还有待优化,思路一的代码也会尽快完成,出现问题望指正。

//箱子类
class Box {
    static int MAX_SIZE = 10;
    int id = 0;
    int size;
    int[] st
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春哥一号

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值