设P=[P1, P2, ..., Pk]
为k
正整数,T
为正整数。我想生成所有的组合,这些组合的总和最多为T
。即sum(x[i] * P[i] for i in 1:k) <= T
,其中x[i] = 1
当i
在组合中被选择。
举例说明。
让P=[1, 2, 3]
和T=4
。组合应该是:
1
2
3
1, 2
1, 3
2, 3
所以只有组合1, 2, 3
不能出现在那里,因为1 + 1 + 3 = 5 > 4
。
我想先生成所有的组合,然后再开始验证约束sum(x[i] * P[i] for i in 1:k) <= T
。但这种方法可能比其他聪明的方法更耗时。我们如何生成这样的组合呢?
注意:如果您知道Python或Matlab中可以用来生成此类组合的任何函数,您可以提供它。
谢谢。
https://stackoverflow.com/questions/46942681
复制相似问题