#include <stdio.h>
#include <string.h>
#define MAXN 100
/*有一个含n个整数的数组a,所有元素均不相同,设计一个算法求其所有子集(幂集)。
输出:
求解结果
{} {3}{2}{23}{1}{13}{12}{123}
*/
void printResult(int a[],int n,int x[])//输出一个解
{
int i;
printf(" {");
for(i=0;i<n;i++)
{
if(x[i]==1)
{
printf("%d",a[i]);
}
}
printf("}");
}
void dfs(int a[],int n,int i,int x[])//回溯算法
{
if(i>=n)
{
printResult(a,n,x);
}
else
{
x[i]=0;
dfs(a,n,i+1,x);//不选择a[i]
x[i]=1;
dfs(a,n,i+1,x);//选择a[i]
}
}
int main()
{
int a[]={1,2,3};//s[0..n-1]为给定的字符串,设置为全局变量
int n=3;
int x[MAXN];//解向量
memset(x,0,sizeof(x));//解向量初始化
printf("求解结果\n");
dfs(a,n,0,x);
printf("\n");
}
有一个含n个整数的数组a,所有元素均不相同,设计一个算法求其所有子集(幂集)。输出:求解结果{} {3}{2}{23}{1}{13}{12}{123}
最新推荐文章于 2024-05-27 15:14:44 发布