可转位非重复的组合基于此问题创建具有固定长度
Ordered Fixed Length Combination of a String
我创建的固定长度创建字符的组合的PHP算法(基本上是Java的答案的重写)
private function getCombination($length, $input) {
$result = array();
if ($length == 0) {
return $result;
}
$first = substr($input, 0, $length);
$result[] = $first;
if (strlen($input) == $length) {
return $result;
}
$tails = $this->getCombination($length - 1, substr($input, 1));
foreach ($tails as $tail) {
$tmp = substr($input, 0, 1) . $tail;
if (!in_array($tmp, $result)) {
$result[] = $tmp;
}
}
return array_merge($result, $this->getCombination($length, substr($input, 1)));
}
对于另一个问题,Create fixed length non-repeating permutation of larger set,我是通过提供一个“钥匙”,将始终把生产EXA给予(辉煌)算法,这将使排列可转位,有效地使他们adressable当给定相同的一组字符和相同的长度时,ct相同的排列。
那么,现在我基本上需要相同,但对于组合,与排列相比,在我的另一个问题。
上述算法可以用同样的方法修改吗?含义营造出宛如
public function getCombinationByIndex($length, $index);
一个函数会返回一个组合出一千可能与该算法创建的,而无需创建他们事先?