PHP实现组合C运算,从一个数组中取出m个数,有几种组合?有哪些组合?

17 篇文章 0 订阅

<?php
    //从$arr数组中,获取$m个数字组成数组,也就是排列组合的C运算符
    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_first1 = getCombinationToString($arr,$m - 1);
        foreach($temp_first1 as $s){
            $s = $temp_firstelement.','.$s;
            $result[] = $s;
        }
        unset($temp_first1);
        $temp_first2 = getCombinationToString($arr,$m);
        foreach($temp_first2 as $s){
            $result[] = $s;
        }
        unset($temp_first2);
        return $result;
    }
    $arr = range(1, 6);//1~6的数组
    $result = getCombinationToString($arr,2);//6个数里面,取出2个数有多少种组合(即不考虑顺序)
    $data['count'] = count($result);//组合种数
    $data['data'] = $result;//各种数据组合
    echo "<pre>";
    print_r($data);
    echo "</pre>";
  


运行结果:


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值