#include #include #include int populateArray ( int A[] ) { int n, i; printf("Enter array size (between 1 and 20): "); scanf("%d", &n); if ((n <= 0) || (n > 20)) n = 10; for (i=0; i= 0) ++cnt; printf("%u different sums are possible:\n", cnt); printf(" 0\n"); for (i = 1; i <= sum; ++i) if (B[i] >= 0) { printf("%4d = ", i); cnt = B[i]; j = 0; while (1) { if (cnt & (1U << j)) { printf("A[%d]", j); cnt -= (1U << j); if (cnt == 0) break; printf(" + "); } ++j; } printf(" = "); cnt = B[i]; j = 0; while (1) { if (cnt & (1U << j)) { printf("%d", A[j]); cnt -= (1U << j); if (cnt == 0) break; printf(" + "); } ++j; } printf("\n"); } free(B); } int main () { int n, A[20], sum; srand((unsigned int)time(NULL)); n = populateArray(A); printf("Enter sum: "); scanf("%d", &sum); sumCheck(A,n,sum); allSumCount(A,n); exit(0); }