首頁 >後端開發 >php教程 >php 数据结构问题

php 数据结构问题

WBOY
WBOY原創
2016-06-06 20:38:201035瀏覽

第一种: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>

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn