1
假设我们有一组N个项目,S = {t1,t2,t3}。鉴于t1必须出现在每个集合中的限制,我想要产生所有可能的S子集。因此,S的所有可能的子集是{t1},{t1,t2},{t1,t3}和{t1,t2,t3}。我如何编写一个递归函数,它需要两组{t1}和{t2,t3}并返回上面列出的子集。生成集合的所有子集限制
此外,如果我有像S的100个子集,所有子集的存储成为一个问题。我的程序进行迭代,并且在每次迭代中,我只需要操作每个集合中的一个子集。有没有我的方式,我可以一步步生成一组集合的子集,而不是一次完成?即每次我呼叫下一个(S)时,我都会得到一个新的子集。
说明我正在编码C。
“我用C编码” - 我看不到。你到目前为止有什么? – WhozCraig
我正在投票结束,但搜索“C权力集”。您正在构建“功率集”的子集。给定一个限制,你不需要对永远不会限定的子集进行递归调用。例如:http://rosettacode.org/wiki/Power_set#C –
我有一个迭代函数,首先产生最小的一组项目,即{t1}。给定{t1}它会产生所有大小为2的集合,即{t1,t2}和{t1,t3}。最后,它只产生{t1,t2,t3}的超集。 – NewToAndroid