C에서 n 항목의 모든 k 조합을 생성하는 알고리즘
당면 작업은 가능한 모든 항목을 생성하고 표시하는 프로그램을 만드는 것입니다. n개의 개인 집합에서 k개의 서로 다른 사람들의 조합. 이는 다음과 같이 작동하는 조합 생성 알고리즘을 사용하여 달성할 수 있습니다.
알고리즘:
각 순열에 대해:
C로 구현:
#include <algorithm> #include <iostream> #include <string> void comb(int N, int K) { std::string bitmask(K, 1); // K leading 1's bitmask.resize(N, 0); // N-K trailing 0's // print integers and permute bitmask do { for (int i = 0; i < N; ++i) // [0..N-1] integers { if (bitmask[i]) std::cout << " " << i; } std::cout << std::endl; } while (std::prev_permutation(bitmask.begin(), bitmask.end())); } int main() { comb(5, 3); }
샘플 출력:
0 1 2 0 1 3 0 1 4 0 2 3 0 2 4 0 3 4 1 2 3 1 2 4 1 3 4 2 3 4
위 내용은 C에서 n개 항목의 모든 k개 조합을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!