여기에서는 주어진 집합의 모든 고유한 하위 집합을 표시하는 방법을 볼 것입니다. 따라서 집합이 {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 }