採用[b]位[/b]掩碼實現列印給定陣列所有的非空子集。
[b]分析:[/b]
首先來看乙個例子,如果給定乙個正整數n,如何輸出由1到n組成的陣列所有的非空子集呢?
如n=3, 那麼1到3組成的陣列為,陣列長度為3,那麼二進位制表示有[b]1<<3 = 8[/b]種。
0 = 000 = {} 空集
1 = 001 =
2 = 010 =
3 = 011 =
4 = 100 =
5 = 101 =
6 = 110 =
7 = 111 =
[b]遍歷所有的二進位制表示式,考慮其中1的位置,並列印相應的值,就能得到我們想要的結果。[/b]
**如下:
/**
* * 給定乙個正整數n,輸出由1到n組成的陣列所有的非空子集。
* 如n=3, 那麼1到3組成的陣列為
* * 所有二進位制的情況
* * 0 = 000 = {} 空集
* 1 = 001 =
* 2 = 010 =
* 3 = 011 =
* 4 = 100 =
* 5 = 101 =
* 6 = 110 =
* 7 = 111 =
* */
public void printallsubsets(int n)
int allmasks = 1 << n;
//如考慮空集 ,那麼i的初始值為0
for (int i = 1; i < allmasks; i++)
}
依據上述例子的實現方式,下面的方法實現列印乙個字串陣列所擁有的所有非空子集。
/**
* 列印乙個陣列所有的非空子集
*/public void printallsubsets(string array)
// 陣列長度
int len = array.length;
// 根據資料的長度,得出所有二進位制的個數
// 如len =2;
// 0 = 00 = {}
// 1 = 01 =
// 2 = 10 =
// 3 = 11 =
int allmasks = 1 << len;
// 遍歷所有的二進位制表示方式
for (int i = 1; i < allmasks; i++)
}
具體的**和簡單的測試如下:
public class printallnonemptysubsets
* * 所有二進位制的情況
* * 0 = 000 = {} 空集
* 1 = 001 =
* 2 = 010 =
* 3 = 011 =
* 4 = 100 =
* 5 = 101 =
* 6 = 110 =
* 7 = 111 =
* */
public void printallsubsets(int n)
int allmasks = 1 << n;
//如考慮空集 ,那麼i的初始值為0
for (int i = 1; i < allmasks; i++)
}/**
* 列印乙個陣列所有的非空子集
*/public void printallsubsets(string array)
// 陣列長度
int len = array.length;
// 根據資料的長度,得出所有二進位制的個數
// 如len =2;
// 0 = 00 = {}
// 1 = 01 =
// 2 = 10 =
// 3 = 11 =
int allmasks = 1 << len;
// 遍歷所有的二進位制表示方式
for (int i = 1; i < allmasks; i++)
}public static void main(string args) );
exam.printallsubsets(3);
}}
輸出結果:
a b
a b
c a c
b c
a b c
1 2
1 2
3 1 3
2 3
1 2 3
求乙個陣列的子集
該題是力扣上面的乙個題,感覺思路不錯就摘抄下來做個筆記。以後準備定期耍上面的題來提高一下自己的演算法基礎。題目描述如下 給定一組不含重複元素的正數陣列 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...
求乙個陣列集合的所有子集以及其寬度解法
對於長度為a.length的陣列,構建乙個長為a.length的01010這樣的序列,然後其所有子集就是所有的01010這樣的情況集合,共有2 a.length個。以下為1道leetcode題 對於每乙個1000.0000至111.1111,都是經歷先將0處變為1,再將1處變為1,再將2處變為1,直...