目錄
從一維數組產生組合
首頁 後端開發 php教程 如何從一維數組產生所有可能的元素組合,同時考慮順序和重複項?

如何從一維數組產生所有可能的元素組合,同時考慮順序和重複項?

Oct 31, 2024 pm 08:47 PM

How can I generate all possible combinations of elements from a 1D array, considering both order and duplicates?

從一維數組產生組合

簡介

給定數組中元素的組合可在各個領域中找到應用,例如作為組合和最佳化。

問題陳述

給定一個一維數組,目標是確定元素的所有可能組合,確保同時考慮順序和重複項.

要在依序分解和重複分解時產生所有組合,需要係統化的方法。其中一種方法涉及利用遞歸和數組操作:

<code class="php">&lt;?php

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

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

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

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

?&gt;</code>
登入後複製

解釋

  1. 深度選取器函數遞歸地遍歷數組並根據順序構造組合
  2. 每個遞歸呼叫都對數組的副本進行操作,一次刪除一個元素。
  3. 如果陣列副本非空,則遞歸會繼續修改後的陣列和附加了刪除的元素的目前字串。
  4. 如果陣列副本為空,則將附加最後一個元素的目前字串加入收集數組。
  5. print_r 函數顯示收集的組合。

輸出

使用提供的數組,程式碼產生以下組合:

Array
(
    [0] =&gt;  Alpha
    [1] =&gt;  Alpha Beta
    [2] =&gt;  Alpha Beta Gamma
    [3] =&gt;  Alpha Beta Gamma Sigma
    [4] =&gt;  Alpha Beta Sigma
    [5] =&gt;  Alpha Beta Sigma Gamma
    [6] =&gt;  Alpha Gamma
    [7] =&gt;  Alpha Gamma Beta
    [8] =&gt;  Alpha Gamma Beta Sigma
    [9] =&gt;  Alpha Gamma Sigma
    [10] =&gt;  Alpha Gamma Sigma Beta
    [11] =&gt;  Alpha Sigma
    [12] =&gt;  Alpha Sigma Beta
    [13] =&gt;  Alpha Sigma Beta Gamma
    [14] =&gt;  Alpha Sigma Gamma
    [15] =&gt;  Alpha Sigma Gamma Beta
    [16] =&gt;  Beta
    [17] =&gt;  Beta Alpha
    [18] =&gt;  Beta Alpha Gamma
    [19] =&gt;  Beta Alpha Gamma Sigma
    [20] =&gt;  Beta Alpha Sigma
    [21] =&gt;  Beta Alpha Sigma Gamma
    [22] =&gt;  Beta Gamma
    [23] =&gt;  Beta Gamma Alpha
    [24] =&gt;  Beta Gamma Alpha Sigma
    [25] =&gt;  Beta Gamma Sigma
    [26] =&gt;  Beta Gamma Sigma Alpha
    [27] =&gt;  Beta Sigma
    [28] =&gt;  Beta Sigma Alpha
    [29] =&gt;  Beta Sigma Alpha Gamma
    [30] =&gt;  Beta Sigma Gamma
    [31] =&gt;  Beta Sigma Gamma Alpha
    [32] =&gt;  Gamma
    [33] =&gt;  Gamma Alpha
    [34] =&gt;  Gamma Alpha Beta
    [35] =&gt;  Gamma Alpha Beta Sigma
    [36] =&gt;  Gamma Alpha Sigma
    [37] =&gt;  Gamma Alpha Sigma Beta
    [38] =&gt;  Gamma Beta
    [39] =&gt;  Gamma Beta Alpha
    [40] =&gt;  Gamma Beta Alpha Sigma
    [41] =&gt;  Gamma Beta Sigma
    [42] =&gt;  Gamma Beta Sigma Alpha
    [43] =&gt;  Gamma Sigma
    [44] =&gt;  Gamma Sigma Alpha
    [45] =&gt;  Gamma Sigma Alpha Beta
    [46] =&gt;  Gamma Sigma Beta
    [47] =&gt;  Gamma Sigma Beta Alpha
    [48] =&gt;  Sigma
    [49] =&gt;  Sigma Alpha
    [50] =&gt;  Sigma Alpha Beta
    [51] =&gt;  Sigma Alpha Beta Gamma
    [52] =&gt;  Sigma Alpha Gamma
    [53] =&gt;  Sigma Alpha Gamma Beta
    [54] =&gt;  Sigma Beta
    [55] =&gt;  Sigma Beta Alpha
    [56] =&gt;  Sigma Beta Alpha Gamma
    [57] =&gt;  Sigma Beta Gamma
    [58] =&gt;  Sigma Beta Gamma Alpha
    [59] =&gt;  Sigma Gamma
    [60] =&gt;  Sigma Gamma Alpha
    [61] =&gt;  Sigma Gamma Alpha Beta
    [62] =&gt;  Sigma Gamma Beta
    [63] =&gt;  Sigma Gamma Beta Alpha
)
登入後複製

此輸出包含所有可能的組合和排程,滿足問題的指定要求。

以上是如何從一維數組產生所有可能的元素組合,同時考慮順序和重複項?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

兩個點博物館:邦格荒地地點指南
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

11個最佳PHP URL縮短腳本(免費和高級) 11個最佳PHP URL縮短腳本(免費和高級) Mar 03, 2025 am 10:49 AM

11個最佳PHP URL縮短腳本(免費和高級)

在Laravel中使用Flash會話數據 在Laravel中使用Flash會話數據 Mar 12, 2025 pm 05:08 PM

在Laravel中使用Flash會話數據

6個額外的技能,每個PHP開發人員都應該擁有 6個額外的技能,每個PHP開發人員都應該擁有 Feb 28, 2025 am 10:52 AM

6個額外的技能,每個PHP開發人員都應該擁有

了解PHP中的陣列 了解PHP中的陣列 Feb 28, 2025 am 10:53 AM

了解PHP中的陣列

構建具有Laravel後端的React應用程序:第2部分,React 構建具有Laravel後端的React應用程序:第2部分,React Mar 04, 2025 am 09:33 AM

構建具有Laravel後端的React應用程序:第2部分,React

簡化的HTTP響應在Laravel測試中模擬了 簡化的HTTP響應在Laravel測試中模擬了 Mar 12, 2025 pm 05:09 PM

簡化的HTTP響應在Laravel測試中模擬了

php中的捲曲:如何在REST API中使用PHP捲曲擴展 php中的捲曲:如何在REST API中使用PHP捲曲擴展 Mar 14, 2025 am 11:42 AM

php中的捲曲:如何在REST API中使用PHP捲曲擴展

在Codecanyon上的12個最佳PHP聊天腳本 在Codecanyon上的12個最佳PHP聊天腳本 Mar 13, 2025 pm 12:08 PM

在Codecanyon上的12個最佳PHP聊天腳本

See all articles