在 C++ 中查詢給定集合的所有不同的子集


這裡我們將看到如何顯示給定集合的所有不同的子集。所以如果集合是 {1, 2, 3},那麼子集將是 {}、{1}、{2}、{3}、{1, 2}、{2, 3}、{1, 3}、{1, 2, 3}。所有子集的集合稱為冪集。冪集有 2n 個元素。

我們將在 0 到 2n(不包括 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 }

更新於:2019 年 11 月 1 日

3K+ 瀏覽次數

開啟你的 職業生涯

完成課程獲得認證

開始
此廣告
© . All rights reserved.