여기에서는 주어진 집합의 모든 고유한 하위 집합을 표시하는 방법을 볼 것입니다. 따라서 집합이 {1, 2, 3}이면 하위 집합은 {}, {1}, {2}, {3}, {1, 2}, {2, 3}, {1, 3}이 됩니다. , {1, 2, 3}. 모든 부분 집합의 집합을 거듭제곱 집합이라고 합니다. 거듭제곱 집합에는 2n개의 요소가 있습니다.
0에서 2n(제외)까지 루프를 돌며, 각 반복에서 현재 카운터의 i번째 비트가 설정되었는지 확인한 다음 i번째 요소를 인쇄합니다.
예시
#include<iostream> #include<cmath> using namespace std; void showPowerSet(char *set, int set_length) { unsigned int size = pow(2, set_length); for(int counter = 0; counter < size; counter++) { cout << "{"; for(int j = 0; j < size; j++) { if(counter & (1<<j)) cout << set[j] << " "; } cout << "}" << endl; } } int main() { char set[] = {'a','b','c'}; showPowerSet(set, 3); }
출력
{} {a } {b } {a b } {c } {a c } {b c } {a b c }