DynamicProgramming.md (396B)
1 # Dynamic Programming 2 3 L3 4 5 **Definition:** Dynamic programming is the idea that we can break down a problem into subproblems, solve those subproblems, and then use the results to find the problem's overall solution. 6 7 There are two necessary conditions for a problem to be solvable via DP: 8 9 1. [Optimal Substructure](OptimalSubstructure.md) 10 2. [Overlapping Subproblems](OverlappingSubproblems.md)