zoukankan      html  css  js  c++  java
  • List All Of The Subset In Another Method

    Problem description:Please list all of the subsets of a known set including the empty set.

    Thinking: the subset's sum of a super set is (n is the number of the super set element) while a n-bit binary space could express  numbers too.So our target is to generate all of the binary numbers in n bit space.Before solving the problem,please look at this point:

    11111 01111
    +                 1
    -------------------
    11111 10000

    When the number add 1,the current bit will become to 0 and generate a carry if it was 1.Next,the previous bit 1 will become 0 with a carry,too.If its current bit is 0 ,it becomes 1 without a carry and stop the addition.Hence,the program process is clear.

     1 #include <stdio.h>
     2 #include <math.h>
     3 #define MAX 1000
     4 
     5 int n=4;// the number of the set elements
     6 int set[MAX]={1,2,3,4};
     7 int path[MAX]={0};
     8 int count=1;
     9 
    10 //prototype
    11 void print_set();
    12 
    13 int main()
    14 {
    15     int sum=(int)pow(2.0,n)-1;
    16     int index,index_re;
    17     printf("%d:{}\n",count);
    18     for(index=0;index<sum;index++)
    19     {
    20         for(index_re=n-1;index_re>=0;index_re--) 
    21         {
    22             if(path[index_re]==1) 
    23                 path[index_re]=0;
    24             else
    25             {
    26                 path[index_re]=1;
    27                 break;
    28             }
    29         }
    30         count++;
    31         printf("%d:{",count);
    32         print_set();
    33     }
    34     return 0;
    35 }
    36 
    37 void print_set()
    38 {
    39     int index;
    40     for(index=0;index<n;index++)
    41     {
    42         if(path[index]!=0) 
    43             printf("%d ",set[index]);
    44     }
    45     printf("}\n");
    46 }

    Reference material: C语言名题精选百则技巧篇 in Chinese.

  • 相关阅读:
    Iview多行表单增删、表单校验
    Linux常用命令+Git命令
    前端架构师图谱
    第八章学习心得
    第七章学习心得
    第6章学习心得
    第5章学习总结
    第四章心得体会
    第三章学习心得
    第二章学习心得
  • 原文地址:https://www.cnblogs.com/NeilHappy/p/2844456.html
Copyright © 2011-2022 走看看