递归输出集合子集

必须用递归不要贴代码具体说一下思路不写代码也可以... 必须用递归 不要贴代码 具体说一下思路 不写代码也可以 展开
 我来答
百度网友21598dacc
推荐于2016-11-15 · TA获得超过656个赞
知道小有建树答主
回答量:142
采纳率:0%
帮助的人:196万
展开全部
思路: 对于某个集合元素 e 和某个子集subset, e要不就在这个集合中,要不就不在。 故,只需枚举所有元素的在或不在某子集, 即可枚举所有子集。

不标准伪代码: 不妨设集合元素为 e[0] 到 e[n-1] 共n个, 用数组 flag[0] 到 flag[n-1] 代表i元素是否在当前集合

void Output( i )
{
if ( i == 集合元素个数n)
{
根据flag数组输出当前集合(在或不在);
return;
}
flag[i] = 在当前集合;
Output(i + 1);
flag[i] = 不在当前集合;
Output(i + 1);
}

初始化时 flag[0] 到flag[n-1]都为 ‘不在当前集合’;
初始调用 Output(0);
chiconysun
2011-09-07 · TA获得超过2.2万个赞
知道大有可为答主
回答量:5410
采纳率:92%
帮助的人:2505万
展开全部
是输出所有的子集吗,请看严蔚敏《数据结构》C语言版第149-150页
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式