如何计算第二级数组上的组合?
本文关键字:数组 组合 二级 何计算 计算 | 更新日期: 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 }));
}
然后你可以将你的序列序列传递给这个函数,并得到所有可能组合的序列。