排列組合算法(PHP)

用php實現的排列組合算法。使用遞歸算法,效率低,勝在簡單易懂。可對付元素很少的狀況。php

//從$input數組中取$m個數的組合算法
function comb($input, $m)
{
    if($m==1)
    {
        foreach($input as $item)
        {
            $result[]=array($item);
        }
        return $result;
    }
    for($i=0;$i<=count($input)-$m;$i++)
    {
        $nextinput=array_slice($input,$i+1);
        $nextresult=comb($nextinput,$m-1);
        foreach($nextresult as $one)
        {
            $result[]=array_merge(array($input[$i]),$one);
        }
    }
    return $result;
}

//從$input數組中取$m個數的排列算法
function perm($input,$m)
{
    if($m==1)
    {
        foreach($input as $item)
        {
            $result[]=array($item);
        }
        return $result;
    }
    for($i=0;$i<count($input);$i++)
    {
        $nextinput=array_merge(array_slice($input,0,$i),array_slice($input,$i+1));
        $nextresult=perm($nextinput,$m-1);
        foreach($nextresult as $one)
        {
            $result[]=array_merge(array($input[$i]),$one);
        }
    }
    return $result;
}

$input=array(1,2,3,4,5);
print_r(comb($input,3));
print_r(perm($input,3));
相關文章
相關標籤/搜索