求一个集合的幂集(递归回溯法)

    科技2025-10-25  28

    #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("} "); }
    Processed: 0.009, SQL: 8