zoukankan      html  css  js  c++  java
  • 输出一个集合的所有子集(算法)

    转自输出一个集合的所有子集(算法)


    时间复杂度很显然,最少也是2^n,空间复杂度,是n,代码比较简单(每个元素要么在子集中,要么不在,用 j 的二进制形式的每一位代表数组a中对应的位置的元素是否在子集中,例如,当i = 5时, j = i = 5,那么j = 0101; 我们对应的输出 a[0], a[2], 这个过程在while循环中完成)

    1. #include <stdio.h>  
    2.   
    3. int main()  
    4. {  
    5.         int a[4] = {1, 2, 3, 4};  
    6.         int i, j, k;  
    7.         int t = 1 << 4;  
    8.         for (i = 0; i < t; i++)  
    9.         {  
    10.                 j = i;  
    11.                 k = 0;  
    12.                 printf("{");  
    13.                 while (j)  
    14.                 {  
    15.                         if (j & 1)  
    16.                         {  
    17.                                 printf("%d", a[k]);  
    18.                         }  
    19.                         j >>= 1;  
    20.                         ++k;  
    21.                 }  
    22.                 printf("} ");  
    23.         }  
    24.         return 0;  
    25. }  

  • 相关阅读:
    HDU5367 思维map // 动态线段树
    CF500C New Year Book Reading
    窗口的星星
    【模板】扫描线
    [JLOI2014]松鼠的新家
    [USACO15DEC]最大流Max Flow
    The Lost House
    介绍 Seq2Seq 模型
    word2vec 和 glove 模型的区别
    关于 word2vec 如何工作的问题
  • 原文地址:https://www.cnblogs.com/noble/p/4144032.html
Copyright © 2011-2022 走看看