【发布时间】:2012-11-07 23:30:20
【问题描述】:
我知道这个话题被讨论了很多,但我似乎找不到任何适合我需要的实现。
我有以下一组字符:
a b c d e f g h
我想获得所有可能的排列或组合(不重复),但在有限(可变)字符集上,这意味着如果我输入字符和数字2,结果应该是这样的
ab ba ac ca ad da ae ea af fa ag ga ah ha
bc cb bd db be eb bf fb bg gb bh hb
cd dc ce ec cf fc cg gc ch hc
de ed df fd dg gd dh hd
ef fe eg ge eh he
fg gf fh hf
gh hg
我希望你明白我的意思。我目前有一个实现,它为我提供了 所有 字符的排列,但我不知道如何为这些排列实现 limited space:
public function getPermutations($letters) {
if (strlen($letters) < 2) {
return array($letters);
}
$permutations = array();
$tail = substr($letters, 1);
foreach ($this->getPermutations($tail) as $permutation) {
$length = strlen($permutation);
for ($i = 0; $i <= $length; $i++) {
$permutations[] = substr($permutation, 0, $i) . $letters[0] . substr($permutation, $i);
}
}
return $permutations;
}
【问题讨论】:
标签: php permutation