-->
当前位置:首页 > 题库 > 正文内容

程序填空题:求子集(幂集)问题(回溯法)

Luz4年前 (2021-05-10)题库783
有一个含n个数的数组a,所有元素均不相同,设计一个算法求其所有子集(幂集)。

### 输入格式:
第一行输入元素个数n,再依次输入n个数。

### 输出格式:
逐行输出每个解

### 输入样例1:
```in
3
1 2 3
```
### 输出样例1:
```out
{}
{3}
{2}
{2,3}
{1}
{1,3}
{1,2}
{1,2,3}
```

```c++
#include
#include
#define MAXN 100
void dispasolution(int a[],int n,int x[]) //输出一个解
{
printf("{");
int f=0;
for (int i=0;i if (x[i]==1&&f==0)
{
printf("%d",a[i]);f++;
}
else if (x[i]==1&&f>0)
printf(",%d",a[i]);
}
printf("}\n");
}
void dfs(int a[],int n,int i,int x[]) //回溯算法
{
if (i>=n)
;
else
{
;
dfs(a,n,i+1,x);
;
dfs();
}
}
int main()
{
int a[MAXN];
int n;
int x[MAXN];
memset(x,0,sizeof(x));
scanf("%d",&n);
for(int i=0;i scanf("%d",&a[i]);
dfs(a,n,0,x);
return 0;
}
```






答案:
第1空:dispasolution(a,n,x)

第2空:x[i]=0

第3空:x[i]=1

第4空:a,n,i+1,x

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。