C에서 항목 조합
소개
모든 가능한 항목 조합을 생성하는 것은 많은 애플리케이션에서 공통적으로 발생하는 문제입니다. 이 기사에서는 C에서 n 항목의 모든 k-조합을 생성하기 위한 효율적인 알고리즘을 살펴봅니다.
알고리즘
알고리즘은 비트마스크 기술을 사용하여 조합을 나타냅니다.
코드 구현
#include <iostream> #include <vector> using namespace std; void combinations(vector<int>& items, int k) { int n = items.size(); for (int bitmask = 0; bitmask < (1 << n); bitmask++) { vector<int> combination; for (int i = 0; i < n; i++) { if ((bitmask >> i) & 1) { combination.push_back(items[i]); } } cout << "Combination: "; for (int item : combination) { cout << item << " "; } cout << endl; } } int main() { vector<int> items = {1, 2, 3, 4, 5}; int k = 3; combinations(items, k); return 0; }
출력
Combination: 1 2 3 Combination: 1 2 4 Combination: 1 2 5 Combination: 1 3 4 Combination: 1 3 5 Combination: 1 4 5 Combination: 2 3 4 Combination: 2 3 5 Combination: 2 4 5 Combination: 3 4 5
분석
알고리즘의 복잡도는 O(n * 2^n), 여기서 n은 항목 수입니다. 이는 각각 고유한 조합을 나타내는 가능한 모든 비트마스크 값을 반복하기 때문입니다.
위 내용은 C에서 n개 항목의 모든 k-조합을 어떻게 생성할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!