Day 56: 1D Dynamic Programming Continued

Today I continued going over dynamic programming and related questions. I'm still learning and covered the two main approaches: top-down and bottom-up. The top-down approach is generally solved using recursion + memoization (optional caching for optimization). The bottom-up approach is generally solved iteratively.