返回某整數集合的所有子集

2021-06-27 01:37:54 字數 624 閱讀 8279

題目:《程式設計師面試金典(第5版)》p226  

編寫乙個方法,返回某集合的所有子集

方法一:迭代法,每增加乙個元素,就在已生成子集的基礎上,給每乙個子集新增該元素,形成新的子集。

vector< vector> getsubsets(vectornum)

); if (num.empty())

vectortmp;

tmp.push_back(num[0]);

res.push_back(tmp);

for (int i = 1; i < num.size(); i++) }

return res;

}

方法二:遞迴法。

void getsubsets_core(const vector&num, int index, vectorcur, vector< vector> &res)

else }

vector< vector> getsubsets(const vector&num)

getsubsets_core(num, 0, cur, res);

return res;

}

如何得到某集合的所有子集合

我們都知道,乙個含n個元素的集合擁有2 n個子集合,並且不難發現,其中每個子集合都是從0到2 n 1 每個數的二進位制格式中0 放棄,1選擇的結果,如下所示 000 100010 110001 101011 111所以根據數字的二進位制轉換,可以輕鬆獲得乙個集合的所有子集合,如下 sub getal...

python實現返回集合的所有子集

很簡單,不過想法特別好,在學習python的過程中看見了,於是就把他記錄下來。演算法是利用遞迴的思想來實現返回集合的所有子集 如果想要對子集長度進行限制,引數加個limit就行了 def allsubsets s if len s 0 return return allsubsets s 1 s 0...

集合的所有子集

假設集合a 它的所有集合是 表示空集 可以這樣理解這張圖,從集合a的每個元素自身分析,它只有兩種狀態,或是某個子集的元素,或是不屬於任何子集,所以求子集的過程就可以看成對每個元素進行 取捨 的過程。n個元素有2的n次方個組合 每一層左邊節點表示加入該層元素,右邊表示不加入。第二層表示對第1個元素的處...