Algorithm Design By Dynamic Programming Patterns In Python