使用递归函数,输出n个元素的所有子集
来源:互联网 发布:深信服 阿里云 编辑:程序博客网 时间:2024/05/16 14:54
题目描述:
请编写一个递归函数,用来输出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}
0 0
- 使用递归函数,输出n个元素的所有子集
- 使用递归函数,输出n个元素的所有子集
- 试编写一个递归函数,用来输出n 个元素的所有子集。
- 写一个递归函数,用来输出n个元素的所有子集。
- 《数据结构、算法与应用》5.(递归输出n个元素的所有子集)
- 非递归求n个元素的所有子集
- C++递归求解N个元素的所有子集
- 编写一个函数,用来输出n 个元素的所有子集
- 请编写一个递归函数,用来输出n个元素的所有子集。例如,三个元素{a,b,c}的所有子集是:{},{a},{b},{c},{a,c},{ac},{b,c},{a,b,c}.
- n个元素的所有子集(递归+非递归 +不去重)
- 递归实现输出n个整数的全排列和所有子集
- hdu 2062 输出第几个子集的所有元素
- 有一个集合A,它又n个元素,请用回溯法输出它所有的子集。
- 递归-N个不相同的元素,输出所有可能的排列
- 求m个元素集合中n个元素的所有子集(C/OC)
- 列出所有K个元素的子集
- 递归生成n个元素的所有排列方式
- 递归算法生成n个元素的所有排列
- 生活需要空间
- 第二周项目一 旱冰场造价
- hibernate缓冲呢
- jquery鼠标滑过显示DIV,鼠标移开隐藏DIV
- 快速排序、归并排序、堆排序的实现
- 使用递归函数,输出n个元素的所有子集
- 一个线程安全的轻量级的日志类
- eclipse svn 忽略 target目录
- const关键字
- n个人围成一个圈,顺序排号,按1,2,3循环报数,凡是报到3的人退出,问最后留下的 是原来的第几号那位
- 解决The requested resource is not available的办法
- C语言 编写一个函数,它从一个字符串中提取一个子字符串
- VMware 共享文件夹
- sql的优化相关问题 经典