I use combnk
生成组合列表。如何生成始终包含特定值的组合子集。例如,对于combnk(1:10, 2)
我只需要包含 3 和/或 5 的组合。有没有快速的方法可以做到这一点?
好吧,在您的具体示例中,从集合 {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)
(此代码仍然有效,即使m
是 1 或 n。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)