私は次の配列Bを持っています:
B=[1 2 3; 10 20 30 ; 100 200 300 ; 1000 2000 3000]
そのような
B =
1 2 3
10 20 30
100 200 300
1000 2000 3000
私は次のコードを使用して、特定の値(制約)を下回るこれらの変数間の可能な組み合わせを見つけています-この場合は2000:
A=[123; 323; 12 ; 421]
SA=sum(A)
V=cell(length(B),1);
n=1;
for k = 1:length(B)
for idx = nchoosek(1:length(B), k)'
B_subset = B(idx);
if (SA + sum(B_subset) <= 2000)
V(n)={B_subset(:)}; %store them in a cell
n=n+1;
end
end
end
しかし、私はそれらを以下のように組み合わせることができませんでした。
目的 :
それらの合計が2000未満になるようにSAで追加されるBからの可能な組み合わせを見つけますか?
制約1:
- 配列の各行から一
B
度に使用できる値は1つだけです。
たとえば、これは受け入れられません:[1 2 20] [2 20 30]
これは正しいものです:[1 20 100] [3 200 3000]
制約2:-回答は、セルVの1つの列にのみ格納する必要があります(上記のコードで初期化されています)。
セルには、現在持っているものと同様の出力が必要です。
V =
[ 100]
[ 300]
[ 200]
[2x1 double]
[2x1 double]
[2x1 double]
[3x1 double]