題目描述
請編寫乙個方法,返回某集合的所有非空子集。
給定乙個int陣列a和陣列的大小int n,請返回a的所有非空子集。保證a的元素個數小於等於20,且元素互異。各子集內部從大到小排序,子集之間字典逆序排序,見樣例。
測試樣例:
[123,456,789]
返回:
假設有測試樣例[a,b,c],來看它是如何得到結果的。
1、首先集合中只有a,那麼它的子集就是
2、後來向集合中加入了b,此時集合的子集為
3、最後向集合中加入了c,此時集合的子集為
可以發現以下規律:
在向集合中新增乙個元素時,這時集合的子集由三部分組成。即原來集合的子集+向原來每個集合的子集中加入新增的元素+新增元素單獨組成的集合。
通過上述分析可得到以下**:
public
class
jihedeziji
/***
*@param a
*@param n 陣列元素個數
*@return
*/public arraylist> getsubsetscore(int a,int n)
arraylist> temp=getsubsets(a, n-1);
for(int i=0;ilist2=temp.get(i);
list2.add(a[n-1]);//1、向原集合的各個子集中新增新元素e
for(int j=0;jlist2=new arraylist<>();
list2.add(a[n-1]);//2、原集合的子集
result.add(list2);//3、新元素單獨組成的集合
result.addall(temp);
return result;
}}
no one can be sure about his future.future is not what fortune teller tells you.it is created by yourself. 求解集合的子集
描述 求解集合的子集 思路 利用二進位制思想,如果在集合中某位數存在,那麼對應的二進位制的相應位數即為1。比如,集合對應的二進位制表示為 10110010 從右往左數 因此如果我們確定了乙個二進位制序列,對應的也就確定了乙個集合。此外,集合的運算可以利用 運算子,依次等價於集合的交集,並集和對稱差集...
求集合的子集
給定一組不含重複元素的整數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,3 1,2 可以用位運算來求子集。用一串長度為陣列大小的二進位制串,對應的位表示有無取到那個位置的數。由於求全部子集,所...
演算法 集合的子集
給定乙個集合,輸出它的所有子集。示例 給定集合 1,2,3 應該輸出 增量構造法,每次選擇乙個元素放到集合中,每次操作的結果即是乙個子集。遞迴操作,每次向當前集合中新增乙個比當前集合中最大的元素大1的數。from future import print function defprint subse...