可轉位非重複的組合基於此問題創建具有固定長度
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);
一個函數會返回一個組合出一千可能與該算法創建的,而無需創建他們事先?