#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int n,*num1,*num2,k=0;
void GetPowerSet(int i)
{
int j;
if(i>n)
{
printf("{");
for(j=0;j<k-1;j++)
printf("%d,",num2[j]);
printf("%d",num2[j]);
printf("}");
if(k) printf(",");
}
else //对第i个元素进行取舍;
{
num2[k]=num1[i]; k++;
GetPowerSet(i+1); //取第i个元素;
k--;
GetPowerSet(i+1); //不取第i个元素;
}
}
void main()
{
int i;
printf("请输入集合中的元素个数:");
scanf("%d",&n);
num1=(int *)malloc((n+1)*sizeof(int));
num2=(int *)malloc((n+1)*sizeof(int));
printf("请输入%d个元素:",n);
for(i=1;i<=n;i++)
scanf("%d",num1+i);
printf("{");
GetPowerSet(1);
printf("}\n");
}