【問題描述】
{},
, , , ,
, , , , , ,
, , , ,
一共16個,事實上n個元素的集合的子集共有2n
個(包含空集)。
【方法一】遞迴
定義乙個元素陣列mark[ ],用來存放第i個元素,當第i個元素不出現在子集中,對應的位置為空。偽**如下:
共n個元素,每個元素取或不取,
subset(判斷第i個元素)
【方法二】位操作
集合set=,對於任意乙個元素,在每個子集中,要麼存在,要麼不存在,對應關係是:
a->1或a->0
b->1或b->0
c->1或c->0
對映為子集:
(a,b,c)
(1,1,1)->(a,b,c)
(1,1,0)->(a,b )
(1,0,1)->(a, c)
(1,0,0)->(a )
(0,1,1)->( b,c)
(0,1,0)->( b )
(0,0,1)->( c)
(0,0,0)->@ (@表示空集)
void findsubset(char *array,int len)
cout <<endl;
}
}
當然還要輸出空集,上面的**省略了這一行。
求乙個陣列的子集
該題是力扣上面的乙個題,感覺思路不錯就摘抄下來做個筆記。以後準備定期耍上面的題來提高一下自己的演算法基礎。題目描述如下 給定一組不含重複元素的正數陣列 nums,返回該陣列所有可能的子集 冪集 說明 解集不能包含重複的子集。示例 輸入 nums 1,2,3 輸出 3 1 2 1,2,3 1,3 2,...
判斷乙個陣列是否是另乙個陣列的子集
給兩個陣列 arr1 0.m 1 和arr2 0.n 1 判斷arr2是否是arr1的乙個子集合,兩個陣列都是未排序的。例子 input arr1 arr2 output arr2 is a subset of arr1 input arr1 arr2 output arr2 is a subset...
求乙個數字陣列裡的最大連續數字的個數
問題 求乙個數字陣列裡的最大連續數字的個數。比如 3,4,4,4,2,2,3,4 return 3。此題為google的面試題。分析 設定兩個變數 全域性最大連續數字個數 maxsucc 以及區域性連續數字個數 temp。從第二個數字開始,如果當前數字比前乙個數字大1,則 temp 遇到不滿足條件的...