此題可將 constraint 看成,存在一個大小為 sum(mi) / 2 的背包,因為物件的重量與價值是同個維度,重複使用會造成浪費,不如將背包內記錄 True、False,如此不難看出當背包存儲 boolean 後,可使用位元運算加速:
dp |= dp << mi