當前位置:
首頁 >
数组(全部子集)一
發布時間:2025/5/22
37
豆豆
為什么80%的碼農都做不了架構師?>>> ??
#include <stdio.h> #include <stdlib.h> #include <math.h>int printSubsequences(int arr[], int len) {unsigned int opsize = pow(2, len);int cnt;int j;for (cnt = 0; cnt < opsize; cnt++){ printf("{ ");for (j = 0; j < len; j++) {if (cnt & (1 << j)) {printf("%d ", arr[j]);} } printf("}\n");} return 0; }int main(int argc, char *argv[]) {int arr[] = {1, 2, 3}; int len = sizeof(arr) / sizeof(arr[0]);printSubsequences(arr, len);return 0; }輸出結果:
{ } { 1 } { 2 } { 1 2 } { 3 } { 1 3 } { 2 3 } { 1 2 3 }?
原理:
數組元素個數 ?為 ?3 ,那么 全部子集有 ?2**3 = 8 個, 使用 位圖表示,其中 位為 1 表示數組下標對應的位置。
0 0 0 ?=>?{ }
0 0 1 ?=> { 1 }
0 1 0 => { 2 }
0 1 1 => { 1, 2}
1 0 0 => { 3 }
1 0 1 =>{1 , 3}
1 1 0 => {2 , 3}
1 1 1 => {1, 2, 3}
轉載于:https://my.oschina.net/tsh/blog/869210
總結
- 上一篇: 使用RunTime添加动态方法、方法交换
- 下一篇: 使用LeakCanary遇到的问题 就是