Binary Search, Backtracking, and Dynamic Programming Choices