조합과 순열을 포함하여 PHP의 1D 배열에서 가능한 모든 조합을 어떻게 생성할 수 있습니까?
PHP에서 가능한 모든 조합 가져오기: 포괄적인 솔루션
1D 배열에서 가능한 모든 조합을 검색하는 것은 특히 다음과 같은 경우 복잡한 작업이 될 수 있습니다. 조합과 순열을 모두 고려합니다. 이 문제에 대한 다양한 접근 방식이 있지만 매우 효과적인 해결책 중 하나는 재귀 함수를 구현하는 것입니다.
재귀 함수인 deep_picker()는 배열에 대해 깊이 우선 검색을 수행하고 모든 분기를 탐색하고 요소를 결합하여 구성 요소를 구성합니다. 조합. 각 요소에 따라 점진적으로 수정되는 임시 문자열을 유지하는 반면, Collect 배열은 최종 조합을 저장합니다. 이 함수가 어떻게 작동하는지 살펴보겠습니다.
- 기본 사례: 임시 문자열이 비어 있으면 독립형 요소가 고려되고 있음을 의미합니다. 이 경우에는 Collect 배열에 직접 추가됩니다.
- 재귀 탐색: 요소를 결합할 때 함수는 원래 배열의 복사본을 만들고 현재 요소를 제거합니다. 그것으로부터. 그런 다음 수정된 배열에서 깊이_선택기()를 재귀적으로 호출하여 추가된 요소와 함께 업데이트된 임시 문자열을 전달합니다. 결합할 요소가 더 있으면 재귀 프로세스를 계속합니다.
- 조합 및 순열: 각 요소를 반복하고 재귀적으로 결합함으로써 깊이_선택기()는 가능한 모든 조합과 순열을 효과적으로 생성합니다. 반복하지 않고. 이 접근 방식을 사용하면 문자열의 두 변형('알파 베타' 및 '베타 알파')이 최종 출력에 포함됩니다.
- 최종 결과: 함수가 모든 조합을 탐색하면 수집 배열에는 입력 배열에서 가능한 모든 조합의 전체 세트가 포함되어 있습니다.
구현 및 실행
이러한 깊이 우선 검색 및 조합 검색을 구현하려면, 다음 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>
실행 시 이 코드는 가능한 모든 조합과 배열의 다음 배열을 출력합니다.
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의 1D 배열에서 가능한 모든 조합을 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel Back End : Part 2, React가있는 React 앱 구축

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법
