递归求集合的所有子集的程序

简介:
#include <iostream>
#include <vector>
using namespace std;
//算法描述:
//1、如果遍历完全集,打印出所有被标记为true的元素
//2、否则:
//3、取第depth个元素,即标记为true
//4、继续判断第depth+1个元素
//5、不取第depth个元素,妈标记为false
//6、继续判断第depth+1个元素
//如:集合元素为a,b,c
// 把与元素a对应的标记为true,表示要取出
//判断元素b,进入第一层递归,里面就标记b为取出,再进入递归,标记C为取出,再进入递归,打印a,b,c
//退出上一层递归,标记c不取出,进入第二个递归,由于已经遍历完,打印出ab,
//依此类推
//。。。
void getAllSubset(char str[], int size, vector<bool>  bVector, int depth);

int main()
{
char s[] = {'a', 'b', 'c'};
int size = sizeof(s) / sizeof(char);
       vector<bool> v(size, false);

       getAllSubset(s, size, v, 0);
       return 0;
}

void getAllSubset(char str[], int size, vector<bool>  bVector, int depth)
{
if (depth == size) //如果把size个数都判断完,就把取出的数打印出来
{
         for (int i = 0; i < size; i++)
         {
          if (bVector[i] != false)
                 cout << str[i] << " ";
         }
         cout << endl;
}
else
{
bVector[depth] = true;   //取第de pth个数
getAllSubset(str, size, bVector, depth+1); //判断第depth+1个数
bVector[depth] = false; //不取第depth个数
getAllSubset(str, size, bVector, depth+1); //判断第depth+1个数
}
}



目录
相关文章
|
4月前
|
算法 Python
Python算法——树的遍历顺序变换
Python算法——树的遍历顺序变换
178 4
|
1月前
|
存储 Python
处理随机元素来创建数列是一个涉及随机数生成和数列构造的过程
处理随机元素来创建数列是一个涉及随机数生成和数列构造的过程
13 0
|
10月前
|
算法
组合排序回溯编程题集合(leetcode)
组合排序回溯编程题集合(leetcode)
|
11月前
|
Python
python实现将给定列表划分为元素和大致相等的两个子列表
python实现将给定列表划分为元素和大致相等的两个子列表
数据结构84-集合常见操作之子集代码
数据结构84-集合常见操作之子集代码
37 0
数据结构83-集合常见操作之子集代码
数据结构83-集合常见操作之子集代码
37 0
数据结构83-集合常见操作之子集代码
由遍历序列构造二叉树--王道
前序遍历 + 中序遍历序列 后序+中序遍历序列 层序遍历+中序遍历序列
246 0
由遍历序列构造二叉树--王道
|
算法 C++
经典算法详解(11)递归查找数组中的最大值
题目:编写一个程序,用递归的方法实现查找数组中的最大值。 C++实现 1 #include 2 3 using namespace std; 4 //第一种方法是常规方法,不是使用递归,首先将第一个元素的值赋值给max,然后遍历数组, 5 //当遇到超高max的值时将其赋值给max,最...
1836 0