【发布时间】:2012-04-18 17:53:35
【问题描述】:
由于我不太了解这些类型算法的语言(即如何在谷歌上搜索),我将仅演示我在寻找什么:
我有一个三个数组(源数组的长度不相等):
$array1 = array('A', 'B', 'C', 'D');
$array2 = array('x', 'y', 'z');
$array3 = array('1', '2', '3');
我想要这些数组的所有可能组合,其中:
- 从每个源数组中提取的元素不超过一个。
- array1、array2、array3 的顺序永远不会被破坏(
ABC总是在xyz之前总是在123之前)。
所以结果是:
array(
array('A', 'x', '1'),
array('A', 'x', '2'),
array('A', 'x', '3'),
array('A', 'y', '1'),
// etc ...
// But I also need all the partial sets, as long as the rule about
// ordering isn't broken i.e.:
array('B'),
array('B', 'x'),
array('B', 'x', '1'),
array('x'),
array('x', '1'),
array('1'),
);
结果的顺序对我来说并不重要。
在 php 中工作,但类似的语言或伪代码当然可以。或者我只是对我应该查看哪些特定类型的排列/组合算法提出建议。
【问题讨论】:
-
提示:为每个数组添加一个空 ('') 条目,并将规则 #1 更改为“恰好每个数组中的一个元素”。 现在它是一个笛卡尔积。
标签: algorithm combinations cartesian-product