c语言输出一组离散整数的所有子集,C++递归求解N个元素的所有子集

"本文介绍了如何使用C++递归函数来生成一个集合的所有子集。通过控制递归条件,先输出当前子集,然后在去掉一个元素后再进行递归,从而得到所有可能的组合。示例代码展示了对三个元素{'a', 'b', 'c'}
摘要由CSDN通过智能技术生成

C++递归求解N个元素的所有子集

引言:

我在复习C++遇到了设计递归函数的问题。这个例子,很好的显示了设计递归的方式,思想。

这与斐波那数列不同,这个例子更有应用意义。

问题:

试编写一个递归函数,用来输入n个元素的所有子集。

例如:三个元素{a,b,c}

输出:

{a,b,c}

{ab}

{ac}

{bc}

{a}

{b}

{c}

{}

设计思路:

首先,递归是使用的if else结构。

然后,就是if中填条件,再在else写调用自身的函数。  详细思路,请看代码。

代码:

#include

#include

using namespace std;

void build(char str[],int n)

{

if(n==)//控制输出

{

cout<

for(int i=;i

if(str[i]!=' ')

{

cout<

}

cout<

}

else

{

/*** 先递归 ***/

build(str,n-);

char newstr[] = {' '};//去掉就把该位置的元素置成空

/*** 还原之前的状态 ***/

strcpy(newstr,str);

/*** 越来越少的元素 ***/

newstr[n-]= ' ';

/*** 再次递归 ***/

build(newstr,n-);

}

}

作者感言:

其实,设计递归的关键是如何设计。想不到,就百度。看代码也是个快乐的过程,关键是仔细思考。

囫囵吞枣,对于程序员是要不得了。如果你无法做到,用手到后拈来。那么,你学习这个东西是失败的!

N皇后问题——递归求解

比较简单,废话不说,上代码: public class NQueen { //比如:position[1]=3,表示第一行的第三列有一个皇后 private int [] position; //总的 ...

HDU 5694——BD String——————【递归求解】

BD String Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

hdu 1588&lpar;矩阵好题&plus;递归求解等比数列&rpar;

Gauss Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

使用递归函数用来输出n个元素的所有子集(数据结构、算法与应用)

例如,三个元素的集合A = {a,b,c}的所有子集是:空集a,b,c,ab,ac,bc,abc,共八个 分析: 对于集合A中的每个元素,在其子集中都可能存在或者不存在,所以A的子集有23种. 可以设 ...

使用递归函数,输出n个元素的所有子集

题目描述: 请编写一个递归函数,用来输出n个元素的所有子集.例如,三个元素{a,b,c}的所有子集是:{},{a},{b},{c},{a,c},{ac},{b,c},{a,b,c}. 解题思路: 根据 ...

LeetCode OJ Minimum Depth of Binary Tree 递归求解

题目URL:https://leetcode.com/problems/minimum-depth-of-binary-tree/ 111. Minimum Depth of Binary T ...

Python3基础 用 函数递归求解 一个数字的阶乘

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...

【Python实践-3】汉诺塔问题递归求解(打印移动步骤及计算移动步数)

# -*- coding: utf-8 -*- #汉诺塔移动问题 # 定义move(n,a,b,c)函数,接受参数n,表示3个柱子A.B.C中第1个柱子A的盘子数量 # 然后打印出把所有盘子从A借助B ...

九度OJ1205题-递归求解问题

题目1205:N阶楼梯上楼问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:5887 解决:2446 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用 ...

随机推荐

如何做出透明背景的flash动画

最近碰到了一个问题,做动画时怎么设置透明背景,字是白色的,网上搜了一下,发现可以这样做 在插入的flash代码中加入这一行代码就可以实现了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值