湊整算法唄,你這三種重量正好都可以湊最大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種,所以不是最優的方式,在執行效率和程序復雜度上需要取一個平衡。謝謝。
是否還有別的思路呢?謝謝。