add more dynamic programming and backtracking algorithms