非常に簡単な例:
A=[100 250 300]
各組み合わせの合計が500 未満である限り、可能なすべての組み合わせを見つけるにはどうすればよいですか?
非常に簡単な例:
A=[100 250 300]
各組み合わせの合計が500 未満である限り、可能なすべての組み合わせを見つけるにはどうすればよいですか?
このコードは機能するはずです。結果は cell 配列に格納されますC
。
A = [100 250 300];
B = 500;
C = cell(0);
for i = 1:size(A,2)
D = nchoosek(A,i);
for j = 1:size(D,1)
if (sum(D(j,:)) < B)
C{end+1} = D(j,:);
end
end
end
またはよりコンパクト:
A = [100 250 300];
B = 500;
C = cell(0);
for i = 1:size(A,2)
C = [C; num2cell(nchoosek(A,i),2)];
end
C = C(cellfun(@(x) sum(x), C) < B);
このシンプルなコード
A=[100 250 300];
p = perms(A);
for nn = 1:numel(A)
p(sum(p(:,1:nn), 2) < 500, 1:nn)
end
次の出力が得られます
ans =
300
300
250
250
100
100
ans =
300 100
250 100
100 250
100 300
[300 100] や [100 300] などの重複を削除したい場合は、sort
コマンドを使用して値をソートし、次を使用して重複を削除できます。unique