使用递归函数,输出n个元素的所有子集
Posted 隐无影
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用递归函数,输出n个元素的所有子集相关的知识,希望对你有一定的参考价值。
题目描述:
请编写一个递归函数,用来输出n个元素的所有子集。例如,三个元素a,b,c的所有子集是:,a,b,c,a,c,ac,b,c,a,b,c.
解题思路:
根据子集的定义,集合中的每一个元素在子集中都有两种状态:‘1’表示出现,'0'表示不出现;如果所有的元素都不出现,则该子集是空集,如果所有的元素都出现,则该子集是全集。
我们定义一个标记数组tag,用于记录集合中对应的元素是否出现,每层遍历对应集合中的每个元素,都有出现(为‘1’)和不出现(为‘0’)两种可能,一直遍历到所有的元素的可能都标记完,然后根据数组函数输出结果。
#include <iostream>
using namespace std;
void build(char *str,int *tag,int n)
if(n==5)
cout<<"";
for(int i=0;i<5;i++)
if(tag[i]==1)
cout<<str[i];
cout<<""<<endl;
return;
tag[n] = 0;
build(str,tag,n+1);
tag[n] = 1;
build(str,tag,n+1);
int main()
char a[5]='a','b','c','d','e';
int tag[5];
build(a,tag,0);
return 0;
输出结果:
e
d
de
c
ce
cd
cde
b
be
bd
bde
bc
bce
bcd
bcde
a
ae
ad
ade
ac
ace
acd
acde
ab
abe
abd
abde
abc
abce
abcd
abcde
以上是关于使用递归函数,输出n个元素的所有子集的主要内容,如果未能解决你的问题,请参考以下文章