ホームページ  >  記事  >  バックエンド開発  >  PHP で再帰的深さ優先検索を使用して 1D 配列からすべての組み合わせを生成する方法

PHP で再帰的深さ優先検索を使用して 1D 配列からすべての組み合わせを生成する方法

DDD
DDDオリジナル
2024-10-30 18:32:02695ブラウズ

How to Generate All Combinations from a 1D Array in PHP Using a Recursive Depth-First Search?

1D 配列のすべての組み合わせの取得

1 次元配列から取得可能なすべての組み合わせをアセンブルするタスクは、再帰的メソッド。このアプローチには、深さ優先検索アプローチが含まれており、各要素の配置の整合性を維持しながら、可能なすべての組み合わせを探索します。

前述のタスクを効果的に処理する次の PHP コードを考えてみましょう。

<code class="php"><?php

$array = array('Alpha', 'Beta', 'Gamma', 'Sigma');

function depth_picker($arr, $temp_string, &$collect) {
    if ($temp_string != "") 
        $collect []= $temp_string;

    for ($i=0, $iMax = sizeof($arr); $i < $iMax; $i++) {
        $arrcopy = $arr;
        $elem = array_splice($arrcopy, $i, 1); // removes and returns the i'th element
        if (sizeof($arrcopy) > 0) {
            depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
        } else {
            $collect []= $temp_string. " " . $elem[0];
        }   
    }   
}

$collect = array();
depth_picker($array, "", $collect);
print_r($collect);

?></code>

この実装は、入力配列を再帰的に走査し、各要素とその組み合わせセット全体に対する潜在的な影響を分析することによって動作します。組み合わせに要素が含まれている場合、さらなる調査のためにその要素を含まない新しい配列が作成されます。このプロセスは、すべての要素が検査され、組み合わせの全範囲がキャプチャされるまで続きます。

このアプローチを採用すると、提供された 1D 配列から可能なすべての組み合わせを正常に取得でき、元のシーケンスと両方を保持するという要件を満たすことができます。独特のアレンジが特徴です。

以上がPHP で再帰的深さ優先検索を使用して 1D 配列からすべての組み合わせを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。