>백엔드 개발 >C++ >순열을 사용하여 C에서 조합을 어떻게 생성할 수 있습니까?

순열을 사용하여 C에서 조합을 어떻게 생성할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-30 19:04:13483검색

How Can I Generate Combinations in C   Using Permutations?

간단한 순열을 사용하여 C에서 조합 생성

C에서는 순열을 포함하는 간단한 접근 방식을 사용하여 조합을 생성할 수 있습니다. 이 방법을 사용하려면 요소 순서가 중요한 순열 생성 개념을 이해해야 합니다.

알고리즘 개요:

  1. v 크기의 부울 벡터 생성 n, 여기서 n은 집합의 총 요소 수입니다.
  2. v의 첫 번째 r개 요소에 대해 true로 설정합니다. 이 단계에서는 집합에서 첫 번째 r개 요소를 선택합니다.
  3. next_permutation 또는 prev_permutation 함수를 사용하여 부울 벡터의 모든 순열을 생성합니다.
  4. 각 순열에 대해 다음에 해당하는 요소의 인덱스를 인쇄합니다. 의 진정한 가치 v.

구현:

다음은 next_permutation을 사용한 이 알고리즘의 구현입니다.

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    int n, r;
    std::cin >> n;
    std::cin >> r;

    std::vector<bool> v(n);
    std::fill(v.end() - r, v.end(), true);

    do {
        for (int i = 0; i < n; ++i) {
            if (v[i]) {
                std::cout << (i + 1) << " ";
            }
        }
        std::cout << "\n";
    } while (std::next_permutation(v.begin(), v.end()));
    return 0;
}

설명:

next_permutation 함수는 다음을 생성합니다. 부울 벡터의 다음 사전식 순열입니다. 벡터를 반복하고 실제 값의 인덱스를 인쇄하여 세트의 첫 번째 r개 요소의 조합을 얻습니다.

위 내용은 순열을 사용하여 C에서 조합을 어떻게 생성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.