假设我们有一组N项,例如,S= {t1,t2,t3}。考虑到t1必须出现在每一组中,我想生成S的所有可能子集。因此,S的所有可能子集都是{t1}、{t1、t2}、{t1、t3}和{t1、t2、t3}。如何编写一个递归函数,其中包含两个集合{t1}和{t2,t3}并返回上面列出的子集。
另外,如果我有像S这样的1000个子集,那么所有子集的存储就会成为一个问题。我的程序进行迭代,每次迭代时,我只需要操作每个集合中的一个子集。我有没有办法一步而不是一次地生成一个集合的子集?也就是说,每次我调用next(S)时,我都会得到一个新子集。
注意,我正在用C编写代码。
发布于 2014-03-05 21:48:00
您的“限制”如下
powerset是一个标准的递归函数,超出了问题的范围。实际上,有许多例子说明如何在堆栈溢出上这样做。
https://stackoverflow.com/questions/22215909
复制相似问题