统计 一些排列组合

php排列组合函数(无重复)

http://www.liyangweb.com/php/215.html       PHP排列组合及性能对比


https://github.com/serbanghita/Mobile-Detect


http://blog.youkuaiyun.com/yang3290325/article/details/8028670

组词算法的思路

http://www.myexception.cn/php/406671.html



排列组合,是你要的结果么?

PHP code
$arr=array('裤子','牛仔','纯棉','低腰','加肥');
for($i=1,$count=count($arr);$i<=$count;$i++)
    $temp[$i]=getCombinationToString($arr,$i);

print_r($temp);


function getCombinationToString($arr,$m){
    $result = array();
    if ($m ==1)
       return $arr;

    if ($m == count($arr)){
        $result[] = implode('' , $arr);
        return $result;
    }
        
    $temp_firstelement = $arr[0];
    unset($arr[0]);
    $arr = array_values($arr);
    $temp_list1 = getCombinationToString($arr, ($m-1));
    
    foreach ($temp_list1 as $s){
        $s = $temp_firstelement.$s;
        $result[] = $s; 
    }
    $temp_list2 = getCombinationToString($arr, $m);
    foreach ($temp_list2 as $s){
        $result[] = $s;
    }    
    return $result;
}

/*Array
(
    [1] => Array
        (
            [0] => 裤子
            [1] => 牛仔
            [2] => 纯棉
            [3] => 低腰
            [4] => 加肥
        )

    [2] => Array
        (
            [0] => 裤子牛仔
            [1] => 裤子纯棉
            [2] => 裤子低腰
            [3] => 裤子加肥
            [4] => 牛仔纯棉
            [5] => 牛仔低腰
            [6] => 牛仔加肥
            [7] => 纯棉低腰
            [8] => 纯棉加肥
            [9] => 低腰加肥
        )

    [3] => Array
        (
            [0] => 裤子牛仔纯棉
            [1] => 裤子牛仔低腰
            [2] => 裤子牛仔加肥
            [3] => 裤子纯棉低腰
            [4] => 裤子纯棉加肥
            [5] => 裤子低腰加肥
            [6] => 牛仔纯棉低腰
            [7] => 牛仔纯棉加肥
            [8] => 牛仔低腰加肥
            [9] => 纯棉低腰加肥
        )

    [4] => Array
        (
            [0] => 裤子牛仔纯棉低腰
            [1] => 裤子牛仔纯棉加肥
            [2] => 裤子牛仔低腰加肥
            [3] => 裤子纯棉低腰加肥
            [4] => 牛仔纯棉低腰加肥
        )

    [5] => Array
        (
            [0] => 裤子牛仔纯棉低腰加肥
        )

)*/

------解决方案--------------------
组合问题,可参考

  
  
PHP code
/**C(M,N) recursive*/
function C($m,$n)
{
        if( $n <= 1) return $m; 
        $rs = array();
        while(count($m))
        {   
                $first = array_shift( $m );
                foreach(C($m,$n-1) as $v) $rs[] = $first.$v;
        }   
        return $rs;
}
$array = array('裤子','牛仔','纯棉','低腰','加肥');                                                                                         
while(count($array))
{
        for($i = 2,$j = count($array);$i <= $j;$i++)
        {   
                print_r(C($array,$i));
        }   
        array_shift($array);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值