PHP의 1차원 배열 내에서 요소의 가능한 모든 조합과 순열을 어떻게 생성할 수 있습니까?

Linda Hamilton
풀어 주다: 2024-11-01 19:45:30
원래의
1017명이 탐색했습니다.

How can I generate all possible combinations and permutations of elements within a one-dimensional array in PHP?

PHP: 1차원 배열의 가능한 모든 조합을 얻는 방법

이 기사에서는 요소의 가능한 모든 조합을 검색하는 방법을 살펴보겠습니다. PHP의 1차원 배열. 다른 솔루션과 달리 이 접근 방식은 조합과 순열을 모두 고려합니다.

문제 설명

문자열이나 숫자의 배열이 주어지면 목표는 요소의 가능한 모든 조합을 생성하는 것입니다. 다양한 합의를 고려합니다. 예를 들어 '알파 베타'와 '베타 알파'는 출력에 포함되어야 하는 고유한 조합입니다.

PHP 솔루션

제공되는 PHP 솔루션은 재귀적 깊이 우선 검색 알고리즘을 사용합니다.

<code class="php"><?php

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

function depth_picker($arr, $temp_string, &amp;$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>
로그인 후 복사

솔루션 분석

  • length_picker 함수는 초기 배열, 빈 문자열 및 빈 배열 참조를 사용하여 호출됩니다.
  • 재귀적으로 배열을 반복하면서 현재 결과 문자열의 끝에 각 요소를 추가합니다.
  • 임시 문자열에 요소가 있을 때마다 결과 배열에 추가됩니다.
  • 아직 요소가 남아 있는 경우 입력 배열에서 함수는 업데이트된 배열과 임시 문자열로 자신을 호출합니다.
  • 더 이상 요소가 남아 있지 않으면 전체 조합을 포함하는 임시 문자열이 수집 배열에 추가됩니다.

출력

제공된 코드는 주어진 배열에 있는 요소의 모든 조합과 순열을 포함하는 다음 출력을 생성합니다.

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
)
로그인 후 복사

위 내용은 PHP의 1차원 배열 내에서 요소의 가능한 모든 조합과 순열을 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿