增量構造法
一次選出乙個元素放到集合中
#include#includeusing namespace std;
const int max = 100;
int layer = -1; //遞迴層數
int count1 = 0;
void print_subset(int n, int *a, vector&vi, int cur)
print_subset(n, b, vec, 0);
cout << "number of set:" << count1 << endl;
return 0;
}
【位向量法】
構造乙個位向量b[i],其中當b[i]==1的時候i元素在子集a中,b[i]==0時不在子集a中。
#include#include#includeusing namespace std;
const int max = 100;
int count1 = 0;
int layer = -1;
void fullcombination(vector&vi,int n, int* b, int cur)
fullcombination(vec,n, b, 0);
cout << count1 << endl;
return 0;
}
二進位制法
#include#include#includeusing namespace std;
void print_subset( int n, int s)//列印的子集s
int main()
求乙個集合的所有子集 java實現
求乙個集合的所有子集表示從乙個集合當中,任取任意項或不取,所能得到的所有結果,比如有乙個集合,那麼,等都是它的子集,空集也是它的子集,乙個具有n 個元素的集合,它的子集共有2 n個,因為對於每個元素都有兩種可能 選與不選。如果用1來表示選擇,0表示不選,那麼四個元素的集合選擇情況可以表示為 0000...
求集合的所有子集
現有乙個包含n個元素的集合s,求集合s的所有子集?例如 集合s包含三個元素,則它的所有子集為 空集 和。這裡先用位操作的思路來求解,具體方法 用2進製bit位來標記集合中的某個元素是否被選中,1代表選中,0代表未選中。例如集合的所有子集可如下表示 空集 0 0 0 0 0 1 0 1 0 1 0 0...
輸出乙個集合的所有子集
輸出字串的所有子集 如 對 abc 輸出 c b bc a ac ab abc 第一種做法 2 n 遍歷每個字元,每個字元只能取或者不取。取就把該字元加入結果中,遍歷完畢後,輸出結果字串。如下 main.cpp 輸出乙個集合的所有子集 created by zjl on 16 8 10.includ...