如何计算第二级数组上的组合?

本文关键字:数组 组合 二级 何计算 计算 | 更新日期: 2023-09-27 18:06:30

如果问题不清楚,请原谅。我不知道怎么建造它。我需要计算一个给定数组的所有可能组合。我最好举个例子:

a, b, c

0, 1, 2, 3

0

A, B

0, 1, 2

可能的结果是:a00A0和b00A0和b30B1....

基本上它会为每个位置旋转每个数组并构建所有可能的字符串。就像试图打开我们年轻时拥有的3位数组合链,我们忘记了钥匙。

如何计算第二级数组上的组合?

您要查找的是编译时未定义的多个序列的笛卡尔积。

Eric Lippert在这篇博文中描述了如何解决这个问题。

那篇文章中的代码如下:

static IEnumerable<IEnumerable<T>> CartesianProduct<T>
    (this IEnumerable<IEnumerable<T>> sequences)
{
    IEnumerable<IEnumerable<T>> emptyProduct =
        new[] { Enumerable.Empty<T>() };
    return sequences.Aggregate(
        emptyProduct,
        (accumulator, sequence) =>
            from accseq in accumulator
            from item in sequence
            select accseq.Concat(new[] { item }));
}

然后你可以将你的序列序列传递给这个函数,并得到所有可能组合的序列。