假设我们有一组N个项目,即S = {t1,t2,t3}。考虑到t1必须出现在每一组中的限制,我想生成S的所有可能子集。因此,S的所有可能子集都是{t1},{t1,t2},{t1,t3}和{t1,t2,t3}。如何编写一个带有两组{t1}和{t2,t3}的递归函数并返回上面列出的子集。
此外,如果我有100个子集,例如S,则所有子集的存储都会成为问题。我的程序进行迭代,每次迭代我只需要操作每个集合中的一个子集。我是否有办法在步骤中生成集合的子集而不是一次性生成集合的子集?即每次我拨打下一个(S)时,我都会得到一个新的子集。
注意我在 C 编码。
答案 0 :(得分:2)
您的“限制”等于以下
powerset是标准的递归函数,超出了您的问题范围。实际上,有许多关于如何在Stack Overflow上执行此操作的示例。