DP is a mathematical optimization and programming method. For many complex problems, there are many subproblems sharing the similar structure. Take advantage of this property. Optimize the algorithm by using the things you have computed and stored. Usually, algorithm with exponential running time could be reduced to polynomial running time.
DFS is just a algorithm to traverse a tree or a graph, nothing special......