What if you can take multiple copies of each item?
Recurrence Change:
Instead of Max(DP[i-1][w], v + DP[i-1][w-wi]),
Use Max(DP[i-1][w], v + DP[i][w-wi]).
Basically, after taking item i, we are still allowed to take item i again (stay in row i).
Can we stop early in Bellman-Ford?
Yes.
If an iteration results in NO relaxations (no distance changes), we can terminate immediately. The distances have converged.