湊整算法唄,你這三種重量正好都可以湊最大30克,所以考慮最后的終止條件,緩沖區(qū)累計(jì)重量達(dá)到270克時(shí),根據(jù)倒數(shù)第二個(gè)來的物料的重量決定下一個(gè)的動作邏輯,一共也沒有幾種組合,以下以設(shè)X=270
X+30+0,直接結(jié)束
X+20+10,再等一個(gè)確定值
X+10+20,再多做一級分支,20克就結(jié)束
X+10+10+10,最后一種情況
倒推后可以獲得:
通過4種組合方式你就可以得到一個(gè)最小30克的package,累計(jì)10個(gè)package就達(dá)到了目標(biāo)重量
也就是說,我系統(tǒng)只接受上面4種組合,從第一個(gè)物料進(jìn)來開始就進(jìn)入這個(gè)組合的邏輯鏈中,結(jié)果是必然的.
當(dāng)然上述算法不是最優(yōu)的,會拋掉大量的30克和20克物料,理論上可以通過增加組合數(shù)量的方式容納更多的組合方式來模擬隨機(jī)的物料進(jìn)入順序,比如用60克作為最小計(jì)量單位,但是這樣邏輯分支馬上就會膨脹的非常快,在執(zhí)行效率和程序復(fù)雜度上需要取一個(gè)平衡.
樓主留言:
我同意您的看法,組合非常多,遠(yuǎn)不止4種,所以不是最優(yōu)的方式,在執(zhí)行效率和程序復(fù)雜度上需要取一個(gè)平衡。謝謝。
是否還有別的思路呢?謝謝。