V_max = sum of all values
dp[0] = 0, dp[v] = infinity for v > 0
for i from 1 to n:
for v from V_max down to value[i]:
dp[v] = min(dp[v], dp[v - value[i]] + weight[i])
answer = largest v where dp[v] <= W
Time: . With and , that's operations.
Space: using 1D array.