Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 주어진 집합의 모든 고유한 하위 집합 찾기

<시간/>

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