您的位置:首页 > 其它

幂集的递归回溯求解

2013-10-15 21:48 316 查看
#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");

}     
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  幂集