Skip to main content
grasp.study
About
Explore
Pricing
Log in
Try it for free
Back to course
👋
Welcome to a Grasp lesson
Create a free account
to keep studying and create your own study path.
Graph Theory for Competitive Programming
·
Module 3
Foundations of Dynamic Programming
1
Dynamic Programming Fundamentals: Optimal Substructure and Overlapping Subproblems
Define optimal substructure and overlapping subproblems, the two hallmarks of dynamic programming.
2
Fibonacci: Recursion & Exponential Complexity
Implement a recursive solution for Fibonacci numbers and identify its exponential complexity.
3
Optimizing Fibonacci with Memoization
Apply memoization (top-down DP) to the recursive Fibonacci solution to achieve linear time complexity.
4
Fibonacci: Tabulation vs. Memoization
Solve the Fibonacci problem using tabulation (bottom-up DP) and compare it with memoization.
5
Solving 1D Dynamic Programming Problems
Solve a basic 1D DP problem such as 'Climbing Stairs'.
6
Grid DP: Counting Paths
Solve a simple 2D DP problem on a grid, such as counting unique paths from top-left to bottom-right.
7
Dynamic Programming Recurrence Relations
Formulate a DP recurrence relation for a classic problem like 'Coin Change' or 'Unbounded Knapsack'.
8
Dynamic Programming: Coin Change and Unbounded Knapsack (Tabulation)
Implement a solution for the 'Coin Change' or 'Unbounded Knapsack' problem using tabulation.
Previous module
Core Traversal Algorithms: BFS & DFS
Next module
Topological Sort and DP on DAGs