请教一道题 望大家帮忙
求 A=(1,3,5,7,9)的所有子集
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
int s[N], a[N], n;
void comb(int t)
{
if (t == n)
{
int i;
for (i = 0; i < n; i++)
if (s[i])
printf("%d ", a[i]);
}
else
{
s[t] = 1;
comb(t + 1);
s[t] = 0;
comb(t + 1);
}
}
int main(void)
{
while (scanf("%d", &n) == 1)
{
int i;
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
memset(s, 0, n);
comb(0);
}
return 0;
}
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
int s[N], a[N], n;
void comb()
{
int i, k = 0;
while (k >= 0)
{
if (k == n)
{
for (i = 0; i < n; i++)
if (s[i])printf("%d ", a[i]);
printf("\n");
s[--k]++;
}
else if (s[k] >= 2)
s[k] = 0, s[--k]++;
else k++;
}
}
int main(void)
{
while (scanf("%d", &n) == 1)
{
int i;
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
memset(s, 0, n);
comb(0);
}
return 0;
}
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 100
int s[N], a[N], n;
void comb()
{
int i, k = 0;
while (k < n)
{
for (i = 0; i < n; i++)
if (s[i])printf("%d ", a[i]);
printf("\n");
for (s[k=0]++; s[k] >= 2; s[k]++)
s[k++]=0;
}
}
int main(void)
{
while (scanf("%d", &n) == 1)
{
int i;
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
memset(s, 0, n);
comb(0);
}
return 0;
}