首頁  >  文章  >  後端開發  >  如何使用遞歸深度優先搜尋從 PHP 中的一維數組產生所有組合?

如何使用遞歸深度優先搜尋從 PHP 中的一維數組產生所有組合?

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?

取得一維數組的所有組合

從一維數組組裝所有可實現的組合的任務可以透過利用遞歸方法。這種方法包含深度優先搜尋方法,探索每種可能的組合,同時保持每個元素排列的完整性。

考慮以下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>

此實現透過遞歸遍歷輸入數組、分析每個元素及其對整個組合集的潛在影響來進行操作。當組合中包含某個元素時,將建立一個不包含該元素的新陣列以供進一步探索。這個過程一直持續到檢查了所有元素並捕獲了完整的組合範圍。

透過採用這種方法,您可以成功地從提供的一維數組中檢索每個可能的組合,滿足保留原始序列的要求並具有獨特的安排。

以上是如何使用遞歸深度優先搜尋從 PHP 中的一維數組產生所有組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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