【发布时间】:2012-11-09 02:20:36
【问题描述】:
假设我在 A 中有 7 个项目,在 B 中有 4 个项目
A=[10;40;90;130;200;260;320]
B=[100;300;500;1000]
我想要可能的组合列表,其中:
- 必须包含 A 的所有子组件
- 可以添加 B 的子组件直到添加的所有子组件的 SUM 大于 2000
有人知道如何在 Matlab 中做到这一点吗?
我的尝试:
X=sum(A);
y=1;
for Y=1:((length(A))-1);
X=X+B(y);
if(X>2000)
disp('Following is unacceptable')
end
y=y+1
end
但是此代码不正确。它只是添加 B 的第一个元素,然后将其添加到第二个元素,依此类推。它没有为我提供可能的组合。
例子:
- sum(A) + B(1) = OK
- sum(A) + B(4) = 不行
- sum(A) + B(1) + B(2) = OK
- sum(A) + B(2) + B(3) = OK
- 等等……
如果将来 A 或 B 的值发生变化,我希望这可以自动化。我不确定这是否也是概率问题。
【问题讨论】:
-
那么最佳解决方案的标准是什么?金额最高的那个?总和超过 2000 的任何解决方案是否可以接受,或者它是 B 中元素数量最少/最多的解决方案?请说明您的问题。
-
已经声明任何高于 2000 的解决方案都是不可接受的。我只想要总和小于 2000 的所有可能组合。
标签: algorithm matlab combinations probability