計算乙個集合的子集

2021-07-10 07:29:25 字數 797 閱讀 4465

用遞迴的思想計算出集合的子集:

#include#include#include#include#includeusing namespace std;

#define maxsize 100

int sub_set(vector&n,int *m,int size)

sub_set(n,m,size-1);

auto vec_size = n.size(); // 下一層迴圈結束以後 直接從此處開始執行

// 依次從容器中取出元素 和 當前層次的元素結合 從而得出新的子集元素

for(decltype(vec_size) i = 0; i < vec_size; i++)

ss << m[size-1];

new_string = ss.str();

ss.str("");

n.push_back( new_string );

return 0;

}bool cmp( const string &a,const string &b ) // 排序的規則

else

}int main()

sub_set(subset,arry,n);

sort(subset.begin(),subset.end(),cmp); // 排序 ,結果看起來更方便

cout<< "子集為:"<::const_iterator iter = subset.begin();

for( ; iter != subset.end() ; iter++ )

輸出乙個集合的所有子集

輸出字串的所有子集 如 對 abc 輸出 c b bc a ac ab abc 第一種做法 2 n 遍歷每個字元,每個字元只能取或者不取。取就把該字元加入結果中,遍歷完畢後,輸出結果字串。如下 main.cpp 輸出乙個集合的所有子集 created by zjl on 16 8 10.includ...

列舉乙個集合的所有子集

數字範圍是0 9,即集合元素在10個及以下 ifndef subset h define subset h class subset endif subset h include include subset.h using namespace std int main array1.find su...

輸出乙個集合的所有子集合

面試遇上了這個問題,思量了會,想到用遞迴的方式解決這個問題。回來網上搜尋了下,發現通過二進位制的思想來解決這個問題更容易,下面我把兩種解決方式的思想及原碼分享出來。我們都知道,乙個含n個元素的集合擁有2 n個子集合,並且不難發現,其中每個子集合都是從0到2 n 1 每個數的二進位制格式中0 放棄,1...