zoukankan      html  css  js  c++  java
  • PHP数组内容不重复组合排列算法

    function getArrSet($arrs,$_current_index=-1)
    {
    //总数组
    static $_total_arr;
    //总数组下标计数
    static $_total_arr_index;
    //输入的数组长度
    static $_total_count;
    //临时拼凑数组
    static $_temp_arr;

    //进入输入数组的第一层,清空静态数组,并初始化输入数组长度
    if($_current_index<0)
    {
    $_total_arr=array();
    $_total_arr_index=0;
    $_temp_arr=array();
    $_total_count=count($arrs)-1;
    getArrSet($arrs,0);
    }
    else
    {
    //循环第$_current_index层数组
    foreach($arrs[$_current_index] as $v)
    {
    //如果当前的循环的数组少于输入数组长度
    if($_current_index<$_total_count)
    {
    //将当前数组循环出的值放入临时数组
    $_temp_arr[$_current_index]=$v;
    //继续循环下一个数组
    getArrSet($arrs,$_current_index+1);

    }
    //如果当前的循环的数组等于输入数组长度(这个数组就是最后的数组)
    else if($_current_index==$_total_count)
    {
    //将当前数组循环出的值放入临时数组
    $_temp_arr[$_current_index]=$v;
    //将临时数组加入总数组
    $_total_arr[$_total_arr_index]=$_temp_arr;
    //总数组下标计数+1
    $_total_arr_index++;
    }

    }
    }

    return $_total_arr;
    }

    $arr=array(
    array('1'),
    array('A','B','C'),
    array('c','b','a'),
    array('+','-','*')
    );
    print_r(getArrSet($arr));

  • 相关阅读:
    线程中常见的方法
    停止线程方式
    线程间的通信_多生产者多消费者问题_JDK1.5新特性_Lock
    1-为什么java的main方法必须是静态的
    45-机器设计问题(深搜)
    44-最大差值三角形
    23-吝啬的国度(vector+深搜)
    43-八数码
    41-安排车辆
    41-邮差送信(dfs)
  • 原文地址:https://www.cnblogs.com/wenxinphp/p/7495227.html
Copyright © 2011-2022 走看看