我不得不寫一個蠻力實現的揹包問題。下面是僞代碼:生成列表的功率集
computeMaxProfit(weight_capacity)
max_profit = 0
S = {} // Each element of S is a weight-profit pair.
while true
if the sum of the weights in S <= weight_capacity
if the sum of the profits in S > max_profit
update max_profit
if S contains all items // Then there is no next subset to generate
return max
generate the next subset S
雖然算法是非常容易實現,我沒有絲毫的想法如何產生的力量集合S,並且進料將進入的每一次迭代的功率的子集while循環。
我的當前實現使用對列表持有一個項目的質量和利潤:
list< pair<int, int> > weight_profit_pair;
我想產生的功率設定這個名單我computeMaxProfit功能。有沒有算法來生成列表的子集?列表是否是正確的容器?
謝謝!這有很大的幫助,它真的讓我在過去的4個小時中瞭解了子集的二進制表示。 – 2012-02-13 02:08:02