Dynamic programming are two effective strategies for algorithms design. Both strategies have key elements that allow one to judge whether the strategy will find optimal solution for a particular problem. Moreover, it can be taken for granted that "any problem solvable by greedy can be solved by dynamic programming, but not vice versa". Discuss using an appropriate example why any problem solvable by greedy can be solved by dynamic programming