【发布时间】:2014-06-03 10:26:21
【问题描述】:
我有一些在编程时未知的数组,可能是 3 或 4 或 7 ...每个数组都有一些元素,即
a={1 2 3 4}
b={6 7 5 2 1}
c={22 4 6 8 4 8 5 4}
d={....}
e, f, g, ...
我想通过从每个数组中采样一个数字来获得所有可能的组合,例如,一种情况是我从 a 中选择“1”,从 b 中选择“7”,从 c 中选择第一个“8”,d[3] , e[5],... 使“1,7,8,d[3],e[5],...”。不可能使用嵌套的 for 循环,因为我不知道编译时数组的数量。如果已知例如 4 个数组 (a,b,c,d),我可以使用 4 个循环:
for (int i = 0; i <= a.Length-1; i++)
{
for (int j = 0; i <= b.Length-1; j++)
{
for (int k = 0; i <= c.Length-1; k++)
{
for (int m = 0; i <= d.Length-1; m++)
{
Response[f++] = a[i].toString()+","+b[j].toString()+","+c[k].toString()+","+d[m].toString();
}
}
}
}
但是对于不同数量的数组,我不知道。
【问题讨论】:
-
为什么不使用二维数组呢?并使用DFS方法生成组合
-
@Rawling - 这不是重复的。这个问题有可变数量的输入。另一个问题仅限于三个输入数组。
-
@Enigmativity 该问题的答案推广到此解决方案。
-
@Rawling - 对不起,我没有在那个答案中看到递归。我现在看到了。我的错。不过,我更喜欢我的回答。 :-)
-
@Enigmativity 这很公平,我认为你是对的,因为 question 不是重复的。
标签: c# arrays combinations