生成包含Matlab中给定集合的至少一个元素的所有组合

Edu*_*das 9 matlab combinations

我用它combnk来生成一个组合列表.如何生成组合子集,其中始终包含特定值.例如,因为combnk(1:10, 2)我只需要包含3和/或5的组合.有快速的方法吗?

Ste*_*joa 6

好吧,在你的具体例子中,从集合{1,...,10}中选择两个整数,使得所选整数之一为3或5,得到9 + 9-1 = 17个已知组合,因此您可以枚举它们.

通常,要从包含整数m的整数{1,...,n}中找到所有n-choose-k组合,这与找到(n-1)-choose-(k-1)相同整数{1,...,m-1,m + 1,...,n}的组合.

在matlab中,那就是

combnk([1:m-1 m+1:n], k-1)
Run Code Online (Sandbox Code Playgroud)

(即使m是1或n,此代码仍然有效.)