#include #include #define MAX_SIZE 20 /* A: array storing flags whether elements are included n: total number of elements i: decision taken for how many elements c: count of the subsets printed so far */ int subsets1 ( int A[], int n, int i, int c ) { int j, k; if (i == n) { ++c; printf("Subset No. %3d: ", c); k = 0; for (j=0; j -1) { if (!printed) { ++c; printf("Subset No. %3d: {", c); for (i=0; i<=top; ++i) printf("%s%d", (i) ? "," : "", S[i]); printf("}\n"); printed = 1; } else if (S[top] == n-1) { --top; if (top >= 0) ++S[top]; printed = 0; } else { ++top; S[top] = S[top-1] + 1; printed = 0; } } return c; } int main () { int n, i, c; int A[MAX_SIZE]; printf("n = "); scanf("%d", &n); printf("\n+++ Method 1\n"); for (i=0; i