[Verse 1] Got a knapsack problem on my mind today Items with their weights and values in the way Zero-one means each item just once or never Dynamic programming makes the solver clever Build a table row by row, decision by decision Include or exclude with mathematical precision Weight capacity sets the boundary line Maximum value is what we're trying to find [Chorus] Knapsack zero-one, take it or leave it Dynamic table helps you to achieve it Row by row, column by column we go Max of include or exclude, let the values flow Unbounded means unlimited supply Take as many as the weight allows you to try Same item over and over again Till the knapsack reaches capacity's end [Verse 2] Zero-one knapsack, each item's unique Previous row tells you what results to seek If weight's too heavy, take the value above Otherwise compare, choose the one you love Take the item plus remaining space value Or skip the item, previous row's rescue Whichever gives you more, that's your choice Let the maximum value be your guide's voice [Chorus] Knapsack zero-one, take it or leave it Dynamic table helps you to achieve it Row by row, column by column we go Max of include or exclude, let the values flow Unbounded means unlimited supply Take as many as the weight allows you to try Same item over and over again Till the knapsack reaches capacity's end [Bridge] Time complexity's order n times w Space can be optimized to just one-d view Unbounded's simpler, just one dimension needed Current row references, efficiency succeeded Coin change problems use this pattern too Unlimited denominations working through [Verse 3] Unbounded knapsack breaks the single rule Multiple copies make it a different tool For each position check every item's worth Add its value to remaining space's girth No previous row needed in this game Current row updates, result's the same Each cell depends on cells to the left Maximum value, that's the final gift [Outro] From zero-one constraint to unlimited flow Dynamic programming solutions help us grow Knapsack problems everywhere you see Optimization's the master key
← Longest common subsequence | Matrix chain multiplication →