凑整算法呗,你这三种重量正好都可以凑最大30克,所以考虑最后的终止条件,缓冲区累计重量达到270克时,根据倒数第二个来的物料的重量决定下一个的动作逻辑,一共也没有几种组合,以下以设X=270
X+30+0,直接结束
X+20+10,再等一个确定值
X+10+20,再多做一级分支,20克就结束
X+10+10+10,最后一种情况
倒推后可以获得:
通过4种组合方式你就可以得到一个最小30克的package,累计10个package就达到了目标重量
也就是说,我系统只接受上面4种组合,从第一个物料进来开始就进入这个组合的逻辑链中,结果是必然的.
当然上述算法不是最优的,会抛掉大量的30克和20克物料,理论上可以通过增加组合数量的方式容纳更多的组合方式来模拟随机的物料进入顺序,比如用60克作为最小计量单位,但是这样逻辑分支马上就会膨胀的非常快,在执行效率和程序复杂度上需要取一个平衡.
楼主留言:
我同意您的看法,组合非常多,远不止4种,所以不是最优的方式,在执行效率和程序复杂度上需要取一个平衡。谢谢。
是否还有别的思路呢?谢谢。