首頁 >後端開發 >php教程 >如何在 PHP 中從單一集合產生特定大小的所有組合?

如何在 PHP 中從單一集合產生特定大小的所有組合?

DDD
DDD原創
2024-11-29 01:03:11159瀏覽

How to Generate All Combinations of a Specific Size from a Single Set in PHP?

如何在PHP 中從單一集合產生特定大小的所有組合

給定一個字元陣列和所需的組合大小,任務是產生該特定大小的所有可能的組合。本文探討了一種使用 PHP 實現此目的的演算法,並將其與不允許重複字元的排列區分開來。

演算法

演算法是基於遞歸。詳細解釋如下:

  1. 初始化:如果演算法第一次運行,則初始組合集設定為給定的字元陣列。
  2. 檢查大小:如果所需的組合大小為1,則傳回目前組合集為
  3. 建立新組合:對於目前集合中的每個組合和原始數組中的每個字符,透過連接當前組合和字符來創建一個新組合。
  4. 遞歸呼叫: 使用新的組合集和所需組合的遞減來遞歸呼叫該函數組合大小。
  5. 結果:最終結果是遞歸完成後回傳的輸出。

示例實現

下面是一個工作示例PHP:

function sampling($chars, $size, $combinations = array()) {

    if (empty($combinations)) {
        $combinations = $chars;
    }

    if ($size == 1) {
        return $combinations;
    }

    $new_combinations = array();
    foreach ($combinations as $combination) {
        foreach ($chars as $char) {
            $new_combinations[] = $combination . $char;
        }
    }

    return sampling($chars, $size - 1, $new_combinations);

}

// Example
$chars = array('a', 'b', 'c');
$output = sampling($chars, 2);
var_dump($output);

輸出:

array(9) {
  [0]=>
  string(2) "aa"
  [1]=>
  string(2) "ab"
  [2]=>
  string(2) "ac"
  [3]=>
  string(2) "ba"
  [4]=>
  string(2) "bb"
  [5]=>
  string(2) "bc"
  [6]=>
  string(2) "ca"
  [7]=>
  string(2) "cb"
  [8]=>
  string(2) "cc"
}

以上是如何在 PHP 中從單一集合產生特定大小的所有組合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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