幂集的递归回溯求解
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");
}
#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");
}
相关文章推荐
- 78. Subsets
- 每日一省之———— 递归 + 回溯 求集合的幂集
- C语言 集合运算 并、交,相对补,对称差,判断两个集合是否相等,求集合幂集(改进幂集)
- C语言 生成集合的幂集
- 移植1- 裸写BL1,启动uboot
- 1043. Is It a Binary Search Tree (25)
- Jungle Roads
- windows server 2008 r2的FTP配置和访问
- C语言中头文件是如何包含的?也说重定义
- 敏捷软件之弊
- 截断上传原理(转载加自己实验)
- python,xml,dom,tree,parser,soup,beautiful soup
- 撰写商业计划书
- So cute are you Python 8
- Spring.Net 技术简介 IOC and DI
- Extjs 继承Ext.Component自定义组件
- UVALive 4670 Dominating Patterns(AC自动机模板题)
- 安卓应用退出的实现 推荐
- [树Dfs][Usaco2010 Mar]gather奶牛大集会
- UVA 11468 Substring(AC自动机 + dp)