>백엔드 개발 >PHP 튜토리얼 >PHP의 단일 세트에서 특정 크기의 모든 조합을 생성하는 방법은 무엇입니까?

PHP의 단일 세트에서 특정 크기의 모든 조합을 생성하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-29 01:03:11239검색

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으로 문의하세요.