问答题 若S是n个元素的集合,则S的幂集P(S)定义为S所有子集的集合。例如,S=(a,b,c),P(S)={0,(a),(b),(c),(a,b),(b,c),(b,c),(a,b,c))。给定S,写一递归算法求P(S)。【东南大学1993五(15分)1997五(15分)】
【正确答案】正确答案:设n个元素存放在数组A[1..n]中。设S初始为空集,可依次将数组A的每一个元素并入S,产生了含一个元素的若干集合,再以含一个元素的集合为初始集合,依次将A的第二个元素并入S,形成了含两个元素的若干集合,如此下去,直至A[i]的全部元素并入。 void powerset(set S,int num) {outset(s);//输出集合S for(int i=num+1;i<=n,i++) powerset(S+[A[i\]\],i); }//调用本函数时,参数S为空集[],num为0
【答案解析】