excel - VBA Excel 中的排列

标签 excel algorithm vba permutation combinatorics

我正在尝试生成字符数组的所有可能组合。输入数组有 n 个字符,5 <= n <= 7,我想生成包含所有 C( n , 5 ) 组合的第二个数组 A( C( n , 5 ) , 5 )。数组中字符的顺序并不重要。

举个例子: 输入数组:{ A, B, C, D, E, F } ,所以 n = 6 输出数组应该是:

{A B C D E},
{A B C D F},
{A B C F E},
{A B F D E},
{A F C D E},
{F B C D E},

这对于 n=5 和 n=6 非常简单,但对于 n=7 就变得非常复杂。有谁知道我应该怎么做?

谢谢

最佳答案

递归求解。

例如,您的 n = 7 案例。在外层,你从{A, B, C, D, E, F, G}开始。从这里,你取出一个字母;不同的 7 次。因此,此输出数组集中有 7 个元素,每个元素有 6 个字母:{A、B、C、D、E、F}、{A、B、C、D、E、G} 等。

对于这些输出中的每一个,您可以使用相同的算法进一步减少。您已经知道如何处理 {A, B, C, D, E, F}。

关于excel - VBA Excel 中的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29078363/

相关文章:

vba - For Each Row 迭代中的逻辑操作

vba - 使用复选框选中的值进行计算

c# - 使用 Linq to XML、XMLNS、XDeclaration、单元格格式创建 Office Excel 文档(有效)

xml - 如何将 XML 中的特殊字符转换为 VBA 中的可读字符串?

c - 我怎样才能使这个会合散列代码工作?

javascript - 从 JSON 设置父子关系

excel - 自动筛选,列格式为日期

python - 属性错误: 'module' object has no attribute 'open_openwork'

algorithm - 上下文相关文法和上下文无关文法的区别

Excel单元格日期格式