foodszhu
输入一个数字表示元素个数

[mw_shl_code=c,true]#include <stdio.h>

#include <stdlib.h>

int a[10] = {0}, f[1000][1000] = {{0}}, lenF[1000] = {0}, lenL = 0;

int getF(int len, int N)

{

if(len > N)

{

return 0;

}

for(int i = 0; i < lenL; i++)

{

for(int j = 0;j < lenF; j++)

{

f[i + lenL][j] = f[j];

}

lenF[i + lenL] = lenF;

}

int t = lenL;

lenL = 2 * lenL + 1;

for(int i = t;i < lenL; i++)

{

f[lenF++] = a[len];

}

}

int main(int argc, char *argv[])

{

int N = 0;

scanf("%d", &N);

for(int i = 0; i < N; i++)

{

scanf("%d", &a);

}

for(int i = 0; i < N; i++)

{

getF(i, N);

}

for(int j = 0; j < lenL; j++)

{

printf("{");

for(int k = 0; k < lenF[j]; k++)

{

printf("%d, ", f[j][k]);

}

printf("}");

}

printf("\n");

}

[/mw_shl_code]

输入一个数字表示元素个数,再输入n个数表示各个元素值

输出了除空集外所有子集

例子:

输入一个数字表示元素个数,再输入n个数表示各个元素值

输出了除空集外所有子集

5

0 1 2 3 4 5

{0, }{0, 1, }{1, }{0, 2, }{0, 1, 2, }{1, 2, }{2, }{0, 3, }{0, 1, 3, }{1, 3, }{0, 2, 3, }{0, 1, 2, 3, }{1, 2, 3, }{2, 3, }{3, }{0, 4, }{0, 1, 4, }{1, 4, }{0, 2, 4, }{0, 1, 2, 4, }{1, 2, 4, }{2, 4, }{0, 3, 4, }{0, 1, 3, 4, }{1, 3, 4, }{0, 2, 3, 4, }{0, 1, 2, 3, 4, }{1, 2, 3, 4, }{2, 3, 4, }{3, 4, }{4, }