«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу сгенерировать все возможные комбинации из одномерного массива в PHP, включая комбинации и перестановки?

Как я могу сгенерировать все возможные комбинации из одномерного массива в PHP, включая комбинации и перестановки?

Опубликовано 18 ноября 2024 г.
Просматривать:899

How can I generate all possible combinations from a 1D array in PHP, including both combinations and permutations?

Получение всех возможных комбинаций в PHP: комплексное решение

Извлечение всех возможных комбинаций из одномерного массива может оказаться сложной задачей, особенно если рассматривая как комбинации, так и перестановки. Хотя существуют различные подходы к этой проблеме, одно из высокоэффективных решений включает реализацию рекурсивной функции.

Рекурсивная функция deep_picker() выполняет поиск в глубину массива, исследуя все ветки и комбинируя элементы для формирования комбинации. Он поддерживает временную строку, которая постепенно изменяется с каждым элементом, а массив сбора сохраняет окончательные комбинации. Давайте рассмотрим, как работает эта функция:

  1. Базовый случай: Если временная строка пуста, это означает, что рассматривается отдельный элемент. В этом случае он добавляется непосредственно в массив сбора.
  2. Рекурсивное исследование: когда элемент необходимо объединить, функция создает копию исходного массива и удаляет текущий элемент. от этого. Затем он рекурсивно вызывает deep_picker() для измененного массива, передавая обновленную временную строку с добавленным элементом. Если необходимо объединить больше элементов, он продолжает рекурсивный процесс.
  3. Комбинации и перестановки: проходя по каждому элементу и рекурсивно комбинируя их, deep_picker() эффективно генерирует все возможные комбинации и перестановки. без повторений. Этот подход гарантирует, что оба варианта строк («Альфа-бета» и «Бета-альфа») будут включены в конечный результат.
  4. Окончательный результат: Когда функция исследует все комбинации, сбор массив содержит полный набор всех возможных комбинаций из входного массива.

Реализация и Выполнение

Для реализации поиска в глубину и извлечения комбинаций можно использовать следующий PHP-код:

 0) {
            depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
        } else {
            $collect []= $temp_string. " " . $elem[0];
        }
    }
}

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

?>

При выполнении этот код выводит следующий массив всех возможных комбинаций и расположений:

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

Этот подход обеспечивает комплексное и эффективное решение для получения всех возможных комбинаций элементов в массиве, гарантируя, что в выходные данные будут включены как комбинации, так и различные расположения.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3