Dynamic Programming And Greedy Approach