-1

可能重复:从 n生成不同组合 PHP
返回 k 元素的所有组合的算法

我有一个包含许多字符/字母的数组,例如:

$seed = array('a','b','c','d','e','f',.....,'z','1','2','3',...'9');

我想从种子中获取所有可能的唯一 4 个字符组合/排列,例如:

abcd, azxy, ag12, aaaa, etc

实现这一目标的最佳方法是什么?

我曾考虑将种子数组分成 4 个字母组,然后遍历每个组并生成该组的所有可能组合,但这会遗漏很多组合(即它将处理 abcd 和 wxyz,但不处理 abyz 和 wxcd)

4

2 回答 2

1

对于数组中的每个字符,写入该字符后跟从其后面的字符(如果您实际上是指组合)或所有字符(这就是我认为您的意思)中的每个唯一的 3 个字符串。

如何生成种子字符串的所有唯一 3 个字符排列?

看到这个非常相似的问题

您可能还想了解递归

Python代码

>>> def product(chars, n):
        if n == 0:
            yield ''
        else:
            for c in chars:
                for result in product(x, n - 1):  # Recursive call
                    yield c + result

>>> list(product(['a', 'b', 'c'], 2))
['aa', 'ab', 'ac', 'ba', 'bb', 'bc', 'ca', 'cb', 'cc']

(注意:在真正的 Python 代码中,您应该使用itertools.product而不是自己编写。)

于 2012-05-01T21:43:09.760 回答
0

生成排列就像对数字求和。这在免费提供的书籍Higher Order Perl中得到了很好的解释,第 128 页

于 2012-05-01T22:25:34.013 回答