这个问题已经在这里有一个答案:
- 生成所有可能的组合 11个回答
我要生成从2D [m×n个]阵列中的所有可能的组合,除了每个阵列的第一个元素。 该元素将站在为“型”,表示其余的元素。 举例来说,如果我有一个数组
shirts[][] =
{
{"colour", "red", "blue", "green", "yellow"},
{"cloth", "cotton", "poly", "silk"},
{"type", "full", "half"}
};
所期望的输出应的衬衫的所有可能性的组合。 对于上面的例子,
colour red
colour blue
...
cloth silk
type full
type half
colour red cloth cotton
colour red cloth poly
...
colour yellow type half
cloth cotton type full
...
cloth silk type half
colour red cloth cotton type full
...
colour yellow cloth silk type half
我想这样的事情(也帮助了其他堆栈溢出问题 )
String shirts[][] =
{
{"colour", "red", "blue", "green", "yellow"},
{"cloth", "cotton", "poly", "silk"},
{"type", "full", "half"}
};
majorCombinations = new int[possibilities][shirts.length];
int currentCombination;
int offset = 1;
for (int i=0; i < shirts.length; i++)
{
currentCombination = 0;
while (currentCombination < possibilities)
{
for (int j=0; j < shirts[i].length; j++)
{
for (int k=0; k < offset; k++)
{
if (currentCombination < possibilities)
{
majorCombinations[currentCombination][i] = shirts[i][j];
currentCombination++;
}
}
}
}
offset *= shirts[i].length;
}
但它给了所有N组合的值,即只
colour cloth type
colour cloth full
...
yellow silk half
它并没有考虑到更小的组合,这是不即使对于[m×n个]数组通用即(N不必是固定的)。 在VBA中帮助将得到高度赞赏。 我很舒服与C,Java和C#。 提前致谢 :)
编辑:
这比不同在这里问的问题 。 这个人是不是一个笛卡尔积,其中一个元件来从所讨论每个阵列服用。 我需要不把这个限制的输出; 因此组合的此方案中的数>在链接的问题的组合数。 此外,第一列是内容的一个描述符,并且必须随内容。