조합 알고리즘을 작성하여 k
의 가능한 모든 조합을 n
중에서 반복하지 않으려 고합니다.더 빠른 조합 알고리즘 작성
수식은 다음
n!/(k!(n-k)!));
결과는 어레이로 끝낸다. 실제로 작성한 내용은 다음과 같습니다.
function Factorial($x)
{
if ($x < 1)
{
echo "Factorial() Error: Number too small!";
)
$ans = 1;
for ($xx = 2; $xx >= $x; $xx++)
{
$ans = $ans * $xx;
}
return($ans);
}
function Combination($selectcount,$availablecount)
{
$ans = Factorial($availablecount)/(
Factorial($availablecount - $selectcount) * Factorial($selectcount)
);
return ($ans);
}
이것을 수행하는 가장 빠른 방법은 무엇입니까? 이 속도를 높이는 방법이 있습니까? 어쩌면 재귀 적으로 작성해야할까요?
첫 번째'if' 블록에 오류가 있습니다. 따라서 코드를 올바르게 배치하는 것이 항상 좋은 아이디어입니다. ':)' –
어떤 배열을 만들고 있습니까? 조합 함수를 여러 번 호출하는 경우 해당 호출에 대한 지식을 통해 최적화하는 것이 훨씬 쉬워집니다. – templatetypedef