Closed. This question is off-topic. It is not currently accepting answers. Learn more
想改进这个问题吗?Update the question所以堆栈溢出的值小于aa>。
假设我们有一组n项,比如,s={t1,t2,t3}。考虑到T1必须出现在每个集合中的限制,我想产生S的所有可能子集。因此,s的所有可能子集都是{t1},{t1,t2},{t1,t3},以及{t1,t2,t3}。如何编写一个递归函数,它接受两个集合{t1}和{t2,t3},并返回上面列出的子集。
另外,如果我有100个子集,比如s,那么存储所有子集就成了一个问题。我的程序进行迭代,在每次迭代中,我只需要操作每个集合中的一个子集。我有没有办法一步而不是一次生成集合的子集?也就是说,每次我给下一个打电话,我都会得到一个新的子集。
注意我在用C编写代码。

最佳答案

你的“限制”如下
移除s中必须出现在最终集合中的所有元素。调用其余集合s`和删除的元素b。
为每个要添加所需元素的项生成s`taking the union with b的powerset。
powerset是一个标准的递归函数,超出了问题的范围。实际上,有很多例子可以说明如何在堆栈溢出时执行此操作。

关于c - 在给定限制的情况下产生集合的所有子集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22215909/

10-13 21:28