PHP递归组合排列

//递归排序法
function leyangjunRank($base, $temp=null)
 {
     static $ret = array();
     $len = strlen($base);
     if($len <= 1)
     {
         //echo $temp.$base.'<br/>';
         $ret[] = $temp.$base;
     }
     else
     {
         for($i=0; $i< $len; ++$i)
         {
             $had_flag = false;
             for($j=0; $j<$i; ++$j)
             {
                 if($base[$i] == $base[$j])
                 {
                     $had_flag = true;
                     break;
                 }
             }
             if($had_flag)
             {
                 continue;
             }
             fsRank(substr($base, 0, $i).substr($base, $i+1, $len-$i-1), $temp.$base[$i]);
         }
     }
     return $ret;
 }


 print_r(leyangjunRank('AABB'));//返回6种组合

返回结果:

Array

(
    [0] => AABB
    [1] => ABAB
    [2] => ABBA
    [3] => BAAB
    [4] => BABA
    [5] => BBAA
)

猜你喜欢

转载自blog.csdn.net/leyangjun/article/details/80493725