Dynamic Programming Subarray Problems