# Knapsack 01 DP (Practice 5027): Rehearsal
Interviewers use this pattern to test whether you can state the invariant before coding. Here is a compact rehearsal note.
## Approach
dp capacity backward.
```python
def knapsack(W,wt,val):
dp=[0]*(W+1)
for w,v in zip(wt,val):
for c in range(W,w-1,-1):
dp[c]=max(dp[c],dp[c-w]+v)
return dp[W]
```
## Complexity
Linear in the dominant input size for the scan; heap/tree variants add a log factor.
## Interview pitfalls
State the invariant out loud, name the complexity, then code. Skipping the invariant is the usual fail mode.
## Practicing out loud
Narrate the approach, complexity and one edge case in under a minute. Disclosure: I work on Linkjob AI, a real-time interview assistant. If you want live practice help, see [Linkjob.ai](https://www.linkjob.ai/).