Dynamic Programming, Search and Backtracking