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

最初の反復では、2番目の列で19から25の間の値の最初の組み合わせを探しています。

Sum =

27
20
24
19
25

20はその最初の組み合わせ(行1と3)なので、新しいマトリックスの開始時にそのデータを削除するか、最初の組み合わせであることを示します(つまり、3番目の列を作成して1を隣に配置します)

次のステップは、まだマトリックスにある値を行2の値と合計することです。

Sum =
29
24
30

次に、2と5が結合されます。

ただし、ペアだけでなく、可能であれば複数の行を組み合わせることができるようにしたいと思います。

この問題を単純化するかもしれない私が見落としている何かがありますか?

4

1 に答える 1

1

これをあまり単純化するつもりはないと思います。これは、NP 困難なナップザック問題のバリエーションです。使用する最適なアルゴリズムは、入力のサイズによって異なります。

于 2012-11-04T04:18:05.677 に答える