數字題2 求乙個陣列的全部子集

2021-06-18 16:20:59 字數 815 閱讀 8409

【問題描述】

{},

, , , ,

, , , , , ,

, , , ,

一共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 遇到不滿足條件的...