Home >Backend Development >PHP Tutorial >php 数据结构问题

php 数据结构问题

WBOY
WBOYOriginal
2016-06-06 20:38:201033browse

第一种:3个元素
第二种:2个元素
第三种:2个元素

怎样生成

<code>0-0-0
0-0-1
0-1-0
0-1-1
1-0-0
1-0-1
1-1-0
1-1-1
2-0-0
2-0-1
2-1-0
2-1-1
</code>

这样的格式呢?

种类数和每个种类的元素个数可变,比如

第一种:2个元素
第二种:1个元素
第三种:2个元素
第四种:3个元素

就变成了

<code>0-0-0-0
....
2-0-1-2
</code>

这样的格式呢?

回复内容:

第一种:3个元素
第二种:2个元素
第三种:2个元素

怎样生成

<code>0-0-0
0-0-1
0-1-0
0-1-1
1-0-0
1-0-1
1-1-0
1-1-1
2-0-0
2-0-1
2-1-0
2-1-1
</code>

这样的格式呢?

种类数和每个种类的元素个数可变,比如

第一种:2个元素
第二种:1个元素
第三种:2个元素
第四种:3个元素

就变成了

<code>0-0-0-0
....
2-0-1-2
</code>

这样的格式呢?

这不就是普通的取余么,普通的一个数组就行了,用一个自增整数反复取余就能列出所有组合了

http://3v4l.org/rnOU4

<code>php</code><code><?php print_r(every(array(3,2,2)));
print_r(every(array(1,2,3,4)));

function every($levels) {
    $results = array();
    $i = 0;

    while(true) {
        $current = $i;

        $result = array();
        foreach(array_reverse($levels) as $max) {
            array_unshift($result, $current % $max);
            $current = intval($current / $max);
        }

        if($current >= 1) {
            break;
        } else {
            $results[] = $result;
            $i++;
        }
    }

    return $results;
}
</code>

业务环境没有写清同学~不明白你在说什么咯~

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn