php 数据结构问题

WBOY
リリース: 2016-06-06 20:38:20
オリジナル
1031 人が閲覧しました

第一种: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>
ログイン後にコピー

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

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート