急急急~~~请教一道编程题~~~

来源:百度知道 编辑:UC知道 时间:2024/05/27 19:18:10
若S是n个元素的集合,则S的幂集P(S)定义为S的所有子集。例如,S={a,b,c},P(S)={(),(a),(b),(c),(a,b),(a,c),(b,c),(a,b,c)}。给定S,写一个递推的算法求P(S)。用类C语言描述。
可不可以在详细一点~~~

1 设当前集合C为空.P(C) = {()};
2 从S中拿出一个元素a,加入到C中,P(C)中每个元素(是个集合)加上元素a -> P0(C).再并上之前的P(C)
3 直到S为空,P(C) -> P(S)

用递归就是反过来搞。
假设S有N个元素,分成元素a和剩下N-1个元素的T集合,递归调用P(T),把a加入到P(T)中的每个元素中。P(S)等于新的P(T)加上之前的P(T).