Bird
Raised Fist0
DSA Cprogramming~5 mins

0 1 Knapsack Problem in DSA C - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main goal of the 0 1 Knapsack Problem?
To select items with given weights and values to maximize total value without exceeding the knapsack's weight capacity.
Click to reveal answer
beginner
In the 0 1 Knapsack Problem, what does the '0 1' mean?
Each item can be either taken (1) or not taken (0); partial items are not allowed.
Click to reveal answer
intermediate
What is the time complexity of the dynamic programming solution for the 0 1 Knapsack Problem?
O(n * W), where n is the number of items and W is the maximum weight capacity of the knapsack.
Click to reveal answer
intermediate
What does the DP table represent in the 0 1 Knapsack Problem?
It stores the maximum value achievable using the first i items with a weight limit j.
Click to reveal answer
intermediate
How do you decide whether to include an item in the knapsack during the DP solution?
Compare the value of including the item (value + best value for remaining weight) with excluding it, and choose the maximum.
Click to reveal answer
What does the 'weight capacity' in the 0 1 Knapsack Problem represent?
ATotal number of items available
BMaximum total weight the knapsack can hold
CMaximum value achievable
DNumber of items selected
Which approach is commonly used to solve the 0 1 Knapsack Problem efficiently?
ADynamic Programming
BGreedy Algorithm
CBrute Force without optimization
DDivide and Conquer
In the DP table, what does the entry dp[i][j] represent?
AMaximum value using first i items with weight limit j
BWeight of the ith item
CNumber of items selected so far
DMinimum weight to achieve value j
If an item's weight is more than the current weight limit j, what happens in the DP solution?
AWeight limit j is increased
BItem is included anyway
CAlgorithm stops
DItem is excluded; dp[i][j] = dp[i-1][j]
What is the key difference between 0 1 Knapsack and Fractional Knapsack?
A0 1 Knapsack allows partial items; Fractional does not
BBoth allow partial items
C0 1 Knapsack does not allow partial items; Fractional does
DNeither allows partial items
Explain how dynamic programming solves the 0 1 Knapsack Problem step-by-step.
Think about building solutions from smaller subproblems.
You got /4 concepts.
    Describe the difference between the 0 1 Knapsack Problem and the Fractional Knapsack Problem.
    Focus on item selection rules and solution methods.
    You got /4 concepts.

      Practice

      (1/5)
      1. In the 0/1 Knapsack problem, why can't we take fractions of items like in the Fractional Knapsack?
      easy
      A. Because the DP table only stores integers
      B. Because each item must be taken as a whole unit or not at all - fractional inclusion violates the problem definition
      C. Because fractions make the recursion infinite
      D. Because the weight array only accepts integer values

      Solution

      1. 0/1 Constraint

        The '0/1' in the name literally means each item has two states: not taken (0) or fully taken (1). There is no state for 0.5 or any fraction.
      2. Why Greedy Fails

        Because you cannot take fractions, the greedy 'highest value/weight ratio first' strategy fails - taking a high-ratio item may block a better combination of whole items.
      3. Why DP is Needed

        DP explores all combinations of 0/1 choices, which is required when greedy fails due to the binary selection constraint.
      4. Final Answer:

        Each item is binary - take it whole or skip it. → Option B
      Hint: 0/1 = binary choice per item: take it whole or skip entirely. [OK]
      Common Mistakes:
      • Confusing 0/1 Knapsack with Fractional Knapsack
      • Thinking DP table data type restricts selection
      • Assuming greedy works for 0/1 Knapsack
      2. For 0/1 Knapsack with n=3 items and capacity W=5, what is the size of the standard DP table dp[n+1][W+1] in C?
      easy
      A. 3 × 5
      B. 4 × 5
      C. 3 × 6
      D. 4 × 6

      Solution

      1. Table Dimensions

        The DP table is dp[n+1][W+1]. With n=3 items and W=5 capacity: dp[4][6].
      2. Why +1

        Index 0 represents the base case: dp[0][w] = 0 (no items) and dp[i][0] = 0 (zero capacity). The +1 makes these base cases fit naturally without off-by-one adjustments.
      3. In C

        int dp[4][6]; - 4 rows (0 to 3 items), 6 columns (capacity 0 to 5).
      4. Final Answer:

        4 × 6 → Option D
      Hint: dp[n+1][W+1] → always add 1 to both dimensions for the base case. [OK]
      Common Mistakes:
      • Using dp[n][W] and missing the base case row/column
      • Adding +1 to only one dimension
      • Confusing n items with n+1 rows
      3. In the 0/1 Knapsack DP recurrence, when weight[i] > w (current item is heavier than current capacity), what is dp[i][w]?
      medium
      A. 0
      B. dp[i-1][w] - same value as without this item
      C. dp[i][w-1]
      D. value[i] + dp[i-1][w - weight[i]]

      Solution

      1. Can't Include Overweight Item

        If weight[i] > w, item i cannot fit - we must skip it.
      2. Inherit from Previous Row

        dp[i][w] = dp[i-1][w]: the best value with first i items equals the best with first i-1 items.
      3. Full Recurrence

        if (weight[i] > w): dp[i][w] = dp[i-1][w]. else: dp[i][w] = max(dp[i-1][w], value[i] + dp[i-1][w-weight[i]])
      4. Final Answer:

        dp[i-1][w] → Option B
      Hint: Item too heavy → skip → copy from row above: dp[i-1][w]. [OK]
      Common Mistakes:
      • Setting dp[i][w]=0 instead of carrying forward the previous best
      • Applying include formula when item doesn't fit
      • Reading dp[i][w-1] instead of dp[i-1][w]
      4. What is the time and space complexity of the standard bottom-up 0/1 Knapsack DP solution?
      medium
      A. Time O(n×W), Space O(n×W)
      B. Time O(n×W), Space O(W)
      C. Time O(2^n), Space O(n)
      D. Time O(n log W), Space O(n×W)

      Solution

      1. Time Complexity

        Two nested loops: outer over n items, inner over W+1 capacities. Each cell O(1). Total: O(n×W).
      2. Space Complexity

        Full table dp[n+1][W+1] → O(n×W) space.
      3. Note

        Space can be reduced to O(W) with 1D rolling array, but standard 2D table is O(n×W).
      4. Final Answer:

        Time O(n×W), Space O(n×W) → Option A
      Hint: Standard 2D table = O(n×W) time AND space. 1D optimized = O(W) space only. [OK]
      Common Mistakes:
      • Confusing standard O(n×W) space with optimized O(W)
      • Claiming O(2^n) which applies only to naive recursion
      • Mixing up time and space complexities
      5. In the space-optimized 1D 0/1 Knapsack in C, why must the inner capacity loop iterate from W down to weight[i], not from 0 up to W?
      hard
      A. To avoid negative array indices
      B. To prevent using item i more than once - forward iteration would allow the same item to be counted multiple times in the same pass
      C. Because C arrays are stored in column-major order
      D. To match the order of the weight array

      Solution

      1. Problem With Left-to-Right

        With a 1D array, processing left to right means dp[w-weight[i]] has already been updated in this pass - item i gets counted again at smaller capacities.
      2. Right-to-Left Prevents Reuse

        Iterating from W down to weight[i] ensures dp[w-weight[i]] still holds the pre-item-i value. Each item counted at most once.
      3. 0/1 vs Unbounded

        Right-to-left = 0/1 Knapsack. Left-to-right = Unbounded Knapsack.
      4. Final Answer:

        Prevents reusing item i in the same pass. → Option B
      Hint: Right-to-left = 0/1 (no reuse). Left-to-right = Unbounded (reuse allowed). [OK]
      Common Mistakes:
      • Using left-to-right which implements Unbounded Knapsack accidentally
      • Thinking loop direction is about array bounds not item reuse
      • Not knowing right-to-left is the key 0/1 vs Unbounded distinction
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard