可能重复:
Algorithm to return all combinations of k elements from n
Generate Distinct Combinations PHP
我有一个包含多个字符/字母的数组,例如:
$seed = array('a','b','c','d','e','f',.....,'z','1','2','3',...'9');
我希望从种子中获得所有可能的唯一4个字符组合/排列,例如:
abcd, azxy, ag12, aaaa, etc
实现这一目标的最佳方法是什么?
我已经考虑过将种子数组划分为4个字母组,然后遍历每个组并生成该组的所有可能组合,但这将省去许多组合(即它将处理abcd和wxyz,但不处理abyz和wxcd)
答案 0 :(得分:1)
对于数组中的每个字符,从后面的字符(如果你实际上是指组合)或所有字符(我认为你的意思)中写下该字符后跟每个唯一的3个字符串。
如何生成种子字符串的所有唯一3个字符排列?
请参阅this very similar question。
您可能还想了解recursion。
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
而不是自己编写。)
答案 1 :(得分:0)
生成排列就像汇总数字一样。在免费提供的书Higher Order Perl,第128页
中对此进行了详细解释