Dynamic Programming Patterns In Python