用递归和位移进行枚举子集合

来源:互联网 发布:科比1415赛季数据 编辑:程序博客网 时间:2024/06/07 15:40
#include <stdio.h>#define N 4int arry[N];void recursive (int a[], int n){    if ( n == N)    {        int i;        for(i = 0; i < N; ++i)            printf("%d ",a[i]);        printf("\n");        return ;    }    a[n]=0;    recursive(a, n+1);    a[n]=1;    recursive(a, n+1);}void bitShift (int a){    for(int i = 0; i < N; ++i)    {        printf("%d ",a&1);        a >>= 1;    }    printf("\n");}int main(){    printf("递归结果:\n");    recursive(arry, 0);    int i = 0;    printf("位移结果:\n");    for(i = 0; i< (1 << N); ++i) bitShift(i);    return 0;}

这里面我只用到了4个元素的集合,当然这里的元素个数是自己去定义的。

下面是程序运行的结果图:



0 0