Learn from outside the books
Dynamic Programming: A technique to solve complex problems by breaking them down into overlapping subproblems and solving them recursively.