Find the power set of a set (recursive backtracking)

#include<stdio.h>
#include<string.h>
#define MAXN 100

void dfs(int *a,int n,int i,int *x);
void Output(int *a,int n,int *x);
int main()
{
    
    
    int a[]={
    
    1,2,3};
    int n=sizeof(a)/sizeof(a[0]);
    int x[MAXN];
    memset(x,0,sizeof(x));
    printf("The result is:\n");
    dfs(a,n,0,x);
    return 0;
}
void dfs(int *a,int n,int i,int *x)
{
    
    
    if(i>=n)Output(a,n,x);
    else{
    
    
        x[i]=0;
        dfs(a,n,i+1,x);
        x[i]=1;
        dfs(a,n,i+1,x);
    }
}
void Output(int *a,int n,int *x)
{
    
    
    int i;
    printf("{");
    for(i=0;i<n;i++){
    
    
        if(x[i]==1)printf("%d",a[i]);
    }
    printf("} ");
}

Guess you like

Origin blog.csdn.net/weixin_46112487/article/details/108965048
set
set