Dynamic Programming Backtracking