2012-11-04 155 views
2

我有類似如下:累積相加

a = [1 11; 2 16; 3 9; 4 13; 5 8; 6 14]; 
b = a; 
n = length(a); 
Sum = []; 

for i=1:1:n, 
    Sum = b(i,2)+b(i+1:1:n,2) 

end 

b = 

1 11 
2 16 
3  9 
4 13 
5  8 
6 14 

對於第一次迭代,我希望找到的值在第二列的第一組合,是19之間和25

Sum = 

27 
20 
24 
19 
25 

由於20是第一組合(排數1 & 3) - 我想刪除在數據開始一個新的矩陣或表示是對FI第一組合(即放置1旁邊通過創建第三列)

下一個步驟將是總結其仍然與行2值的矩陣的值:

Sum = 
29 
24 
30 

然後加入2- & 5將被合併的。

但是,我希望不僅可以組合對,還可以允許多行組合。

有什麼我可以忽略,可以簡化這個問題?

回答

1

我不認爲你會簡化這個非常。這是knapsack problem的變化,這是NP難。使用最好的算法可能取決於輸入的大小。