ホームページ > バックエンド開発 > PHPチュートリアル > PHP の複数配列の組み合わせの置換アルゴリズムを探しています

PHP の複数配列の組み合わせの置換アルゴリズムを探しています

WBOY
リリース: 2016-06-23 13:32:04
オリジナル
1058 人が閲覧しました

4 つの配列をシミュレートします:
$list ['a'] = array (1,2,3);
$list ['c'] =配列 (7,8,9);

では、次のような組み合わせが必要です: 14,15,16,17,18,19,24,25,26,27,28,29,34,35,36,37 ,38 ,39,47,48,49,57,58,59,67,68,69

1 つのアルゴリズムを見つける


ディスカッションに返信 (解決策)

オンラインでコードの一部を見ました:

<?php    class sufa{        public function main(){            $list [‘a’] = array (1,2,3);            $list [‘b’] = array (1,2);            $list [‘c’] = array (1,2,3,4);    //      $list [‘f’] = array (1,2,3,4,5);    //      $list [‘d’] = array ("+","-","*","/","%");                      foreach($list[‘a’] as $v){                $this->getsulie($list,$v,1);            }                     }        function getsulie($list,$content,$deep){            $i=0;            if($deep>count($list)){                return;            }            foreach($list as $k=>$v){                if($i==$deep){                    foreach($list[$k] as $vv){                        $vv = $content.$vv;                        if($deep==count($list)-1){                            echo $vv."<br/>";                        }else {                            $this->getsulie($list,$vv,$deep+1);                        }                    }                    break;                }                $i++;            }            return;        }    }    $s = new sufa();    $s->main();     ?>
ログイン後にコピー


でも、This では違います

再帰が苦手なのでアドバイスをお願いします

$list['a'] = array (1,2,3);$list['b'] = array (4,5,6);$list['c'] = array (7,8,9);foreach($list as $key=>$row) {  unset($list[$key]);  foreach($row as $col) {    foreach($list as $r)      foreach($r as $v) $res[] = $col . $v;  }}echo join(',', $res);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
14,15,16,17,18,19,24,25,26,27,28,29,34 ,35,36,37,38 ,39,47,48,49,57,58,59,67,68,69


$list['a'] = array (1,2,3);$list['b'] = array (4,5,6);$list['c'] = array (7,8,9);foreach($list as $key=>$row) {  unset($list[$key]);  foreach($row as $col) {    foreach($list as $r)      foreach($r as $v) $res[] = $col . $v;  }}echo join(',', $res);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
14,15,16,17,18,19,24,25,26, 27,28,29,34, 35,36,37,38,39,47,48,49,57,58,59,67,68,69



正解、3 つの数字の組み合わせが必要な場合

	$list['a'] = array (1,2,3);	$list['b'] = array (4,5,6);	$list['c'] = array (7,8,9);	$list['d'] = array (10,11,12);
ログイン後にコピー


など、それを達成する方法,349,357,358,35 9,367,368,369

$list['a'] = array (1,2,3);$list['b'] = array (4,5,6);$list['c'] = array (7,8,9);foreach($list as $key=>$row) {  unset($list[$key]);  foreach($row as $col) {    foreach($list as $r)      foreach($r as $v) $res[] = $col . $v;  }}echo join(',', $res);
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
14,15,16,17,18,19,24,25,26,27,28,29, 34,35,36,37,38,39,47 ,48,49,57,58,59,67,68,69



上記は間違っています。余分な配列が書き込まれています。
	$list['a'] = array (1,2,3);	$list['b'] = array (4,5,6);	$list['c'] = array (7,8,9);
ログイン後にコピー


最後に、次を取得する必要があります:
147,148,149,157,158,159,167,168 ,169,247,248,249,257,258,259,267,268,269,347,348,349,357,358,359,367,368,369

あなたは仕事中だと思っていました 緊急に解決する必要がある問題に遭遇したとき、私はあなたがアルゴリズムを勉強していることに気づきませんでした

アルゴリズムの観点から見ると、お二人は質問は次のようにする必要があります: 元のデータの組み合わせ (C(m,n)) の結果に対してデカルト積演算を実行する

コードは投稿しません。ハイライト領域で複数のバージョンを見つけることができます

あなたは仕事で解決する必要のある問題を抱えていましたが、あなたがアルゴリズムを勉強しているとは思いませんでした

アルゴリズムの観点から見ると、あなたの質問は両方とも次のようになります: 元のデータを組み合わせた結果に対してデカルト積演算を実行する( C(m,n))

コードは投稿しません。ハイライトエリアで複数のバージョンを見つけることができます

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