0
0
DSA Cprogramming~20 mins

Generate All Subsets Powerset in DSA C - Practice Problems & Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Powerset Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of powerset generation with recursion
What is the output of this C code that generates all subsets (powerset) of the array {1, 2}?
DSA C
#include <stdio.h>

void printSubset(int subset[], int size) {
    printf("{");
    for (int i = 0; i < size; i++) {
        printf("%d", subset[i]);
        if (i < size - 1) printf(", ");
    }
    printf("}\n");
}

void generatePowerset(int arr[], int n, int index, int subset[], int subsetSize) {
    if (index == n) {
        printSubset(subset, subsetSize);
        return;
    }
    // Exclude current element
    generatePowerset(arr, n, index + 1, subset, subsetSize);
    // Include current element
    subset[subsetSize] = arr[index];
    generatePowerset(arr, n, index + 1, subset, subsetSize + 1);
}

int main() {
    int arr[] = {1, 2};
    int subset[2];
    generatePowerset(arr, 2, 0, subset, 0);
    return 0;
}
A
{}
{2}
{1}
{1, 2}
B
{}
{1}
{2}
{1, 2}
C
{1}
{2}
{1, 2}
{}
D
{1, 2}
{1}
{2}
{}
Attempts:
2 left
💡 Hint
Trace the recursion tree: first exclude, then include each element.
Predict Output
intermediate
2:00remaining
Output of iterative powerset generation
What is the output of this C code that generates all subsets (powerset) of the array {1, 2} using bit manipulation?
DSA C
#include <stdio.h>

void printSubset(int arr[], int n, int bitmask) {
    printf("{");
    int first = 1;
    for (int i = 0; i < n; i++) {
        if (bitmask & (1 << i)) {
            if (!first) printf(", ");
            printf("%d", arr[i]);
            first = 0;
        }
    }
    printf("}\n");
}

int main() {
    int arr[] = {1, 2};
    int n = 2;
    for (int bitmask = 0; bitmask < (1 << n); bitmask++) {
        printSubset(arr, n, bitmask);
    }
    return 0;
}
A
{1, 2}
{1}
{2}
{}
B
{1}
{2}
{1, 2}
{}
C
{}
{2}
{1}
{1, 2}
D
{}
{1}
{2}
{1, 2}
Attempts:
2 left
💡 Hint
Bitmask 0 means empty set, bitmask 1 means include first element, etc.
🧠 Conceptual
advanced
1:00remaining
Number of subsets in powerset
Given an array of size n, how many subsets does its powerset contain?
An
Bn^2
C2^n
Dn!
Attempts:
2 left
💡 Hint
Each element can be either included or excluded.
🔧 Debug
advanced
1:30remaining
Identify the bug in powerset recursion
What error does this code produce when generating powerset of {1, 2}? void generate(int arr[], int n, int index, int subset[], int size) { if (index > n) { printSubset(subset, size); return; } generate(arr, n, index + 1, subset, size); subset[size] = arr[index]; generate(arr, n, index + 1, subset, size + 1); }
ASegmentation fault due to out-of-bounds access
BNo output printed
CInfinite recursion
DCompilation error due to missing return type
Attempts:
2 left
💡 Hint
Check the base case condition for index.
🚀 Application
expert
2:00remaining
Count subsets with sum equal to target
Given an array {1, 2, 3} and target sum 3, how many subsets have sum exactly 3?
A4
B2
C3
D1
Attempts:
2 left
💡 Hint
List all subsets and check their sums.