递归求子集

#include <iostream>

using namespace std;

//作为全局变量
char set[] = {'a', 'b', 'c', 'd'};
bool isVisited[4] = {false};
int size = 4;

void getAllSubset(int depth)
{
    if (depth == size)//如果遍历完全集,打印出所有被标记为true的元素
    {
        for (int i = 0; i < size; i++)
        {
            if (isVisited[i])
                cout << set[i];
        }
        cout << endl;
    }
    else
    {
        isVisited[depth] = true;
        getAllSubset(depth+1);//寻找下一个元素
        isVisited[depth] = false;
        getAllSubset(depth+1);
    }
}

int main()
{

    getAllSubset(0);

    cin.get();
    return 0;
}
时间: 2024-10-23 06:43:21

递归求子集的相关文章

c语言-C语言用递归求圆周率的值,要求精确到小数点后3位,不得使用循环

问题描述 C语言用递归求圆周率的值,要求精确到小数点后3位,不得使用循环 C语言用递归求圆周率的值,要求精确到小数点后3位,不得使用循环 解决方案 http://jingyan.baidu.com/article/bea41d437c69b8b4c51be6e9.html 解决方案二: public class Test { public static void main(String[] args) { System.out.println("怎么插入代码块.."); } }

java-回溯法求子集问题。。

问题描述 回溯法求子集问题.. 问题描述:子集和问题的一个实例为.其中,S={X1,X2,X3,--,XN}是一个正整数的集和,C是一个正整数.子集和问题判定是否存在S的一个子集S1,使得S1中的所有元素加起来正好等于C.

c语言-C语言用递归求圆周率的值,怎么实现

问题描述 C语言用递归求圆周率的值,怎么实现 C语言用递归求圆周率的值,要求精确到小数点后3位,不得使用循环 解决方案 C语言实现求圆周率归并排序递归实现C语言

c语言递归求阶乘 ,不知道哪里不对

问题描述 c语言递归求阶乘 ,不知道哪里不对 递归求阶乘出问题了 #include long f(i) { long f=1; while(i>=1) f*=f(i-1); return f; } main() { int i=10; printf("factorial=%d",f(i)); } 帮忙看一下! 解决方案 = =你的i传进去 就是为了判断的吗? while(i>1) f=i* f(i-1) 解决方案二: #include long f(int i){ if(i

编译一直有错-vb.net用递归求阶乘 编译一直有问题

问题描述 vb.net用递归求阶乘 编译一直有问题 解决方案 你把代码贴上来看看啊. 解决方案二: 估计是你直接把代码写在命名空间里了.命名空间里只能装类,类里面才能装函数,函数里面才能装代码. 解决方案三: 你把代码贴上来我们才好看啊.

递归求字符串长度问题,求大神解答

问题描述 递归求字符串长度问题,求大神解答 int length(char * str) { if (*str == '') { return 0; } else { return (1+length(++str)); } } char str[10]="abcde"; 这个递归最后返回来的为什么会是5 不是应该返回0吗 求大神解惑 解决方案 strlen求字符串长度问题 解决方案二: 你还没有理解递归 最后一次是返回0 但是不是返回给main 而是返回给上一次递归 这样上一次递归就是

java数学归纳法非递归求斐波那契数列的方法_java

本文实例讲述了java数学归纳法非递归求斐波那契数列的方法.分享给大家供大家参考.具体如下: Integer能表示的最大值为 2147483647 大概是21.4亿,这里没有考虑溢出情况(当size为983时就会溢出)! import java.util.List; import java.util.ArrayList; /** * @author jxqlovejava * 斐波那契数列 */ public class Fibonacci { public static List<Intege

递归求n! 哪个地方错了

问题描述 递归求n! 哪个地方错了 #include "StdAfx.h" #include int f(int ) { int n; printf("please input number n:n"); scanf("%d",&n); if (n==1||n==0) return 1; else return n*f(n-1); } 解决方案 #include "StdAfx.h" #include <stdi

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

#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,进