1D Dynamic Programming