Dynamic programming

Dynamic programming is an important topic to solve hard problems in optimized time and space complexity this topic is also considered as tough topic of DSA but if we once understand this topic in very good way then we can easily solve problems easily because what actually happens in this topic is that the problems is broken into sub-problems as it helps in understanding each subproblem and merging the subproblem solutions to a single solution .there are three different approach for solving questions based on dp is number one recursion+memoisation this is top to bottom approach number two tabulation this method is bottom up approach and third using space optimization if possible.