zoukankan      html  css  js  c++  java
  • 实用的任选n算法

    $arr = array(1,2,3,4,5,6)

    需求从$arr中选出任意多个元素的所有组合

    比如任选三,通常我们只需要用三个for循环,但是这并不能适合于所有情况,如果在要求得出所有任选四的所有组合,就必须再加四个for循环,如果再多呢?

    适用于任选n的所有情况:

    <?php
    
    //核心:采用堆+递归的形式实现
    function get_rx($target,$arr) { static $rzRzt = array(); $count = count($arr); $selfName = __FUNCTION__; global $n; if ($count<1) { return; } if ($count == 1) { array_push($target, array_pop($arr)); if (count($target) == $n) { array_push($rzRzt, $target); } } else { $last = array_pop($arr); $selfName($target, $arr); $selfName($target, array($last)); array_push($target, $last); $selfName($target, $arr); } return $rzRzt; } $n = 3;//任选的个数 $arr = array(1,2,3,4,5); $rzRzt = get_rx(array(),$arr); print_r($rzRzt);
  • 相关阅读:
    JVM和HotSpot
    java中的四种引用类型
    垃圾回收与算法
    Full GC
    JVM内存结构
    事务不同的隔离级别实现原理
    事务的隔离级别
    jQuery后续和 前端框架Bootstrap
    jQuery
    BOM和DOM操作
  • 原文地址:https://www.cnblogs.com/mtima/p/3125637.html
Copyright © 2011-2022 走看看