Dynamic Programming References
https://web.stanford.edu/class/cs97si/04-dynamic-programming.pdf.
Categorize DP problems into four sub types:
https://www.cs.cmu.edu/~avrim/451f09/lectures/lect1001.pdf