Master DynamicProgramming Visually
Learn optimization techniques through memoization, tabulation, and classic DP problems.
Choose Your AlgorithmStart Visualizing
Click on any algorithm card to see it in action with interactive step-by-step visualization
Fibonacci Sequence
Classic DP problem demonstrating memoization vs recursion optimization.
O(n)O(2ⁿ) naive0/1 Knapsack
Optimization problem for selecting items with weight and value constraints.
O(nW)O(2ⁿ) naiveLongest Common Subsequence
Find longest subsequence present in both sequences.
O(mn)O(2ⁿ) naiveLongest Increasing Subsequence
Find longest subsequence where elements are in increasing order.
O(n log n)O(n²)Edit Distance
Minimum operations to convert one string to another.
O(mn)O(3^max(m,n))Coin Change
Minimum coins needed to make amount or count total ways.
O(amount × n)O(2ⁿ) naiveMatrix Chain Multiplication
Optimal parenthesization for matrix multiplication.
O(n³)O(2ⁿ) naiveRod Cutting
Maximum revenue by cutting rod into pieces.
O(n²)O(2ⁿ) naiveSubset Sum
Check if subset with given sum exists.
O(n × sum)O(2ⁿ) naivePartition Problem
Partition array into two subsets with equal sum.
O(n × sum)O(2ⁿ) naiveEgg Dropping
Minimum trials to find critical floor.
O(n × k²)O(2ⁿ) naivePalindrome Partitioning
Minimum cuts to partition string into palindromes.
O(n²)O(2ⁿ) naiveWord Break
Check if string can be segmented into dictionary words.
O(n²)O(2ⁿ) naiveMaximum Subarray (Kadane)
Find contiguous subarray with maximum sum.
O(n)O(n²) naiveLongest Palindromic Substring
Find longest palindromic substring in given string.
O(n²)O(2ⁿ) naiveEach algorithm includes interactive visualization, code implementation, and complexity analysis
All DP AlgorithmsDetailed Overview
Explore 15 dynamic programming algorithms with complexity analysis, pros & cons, and use cases
Complete AlgorithmComparison Table
Compare all 15 DP algorithms at a glance
| Algorithm | Type | Optimized (DP) | Naive (Recursive) | Space | Memoization |
|---|---|---|---|---|---|
| Fibonacci | Sequence | O(n) | O(2ⁿ) | O(n) | |
| 0/1 Knapsack | Optimization | O(nW) | O(2ⁿ) | O(nW) | |
| LCS | String | O(mn) | O(2^min(m,n)) | O(mn) | |
| LIS | Sequence | O(n log n) | O(2ⁿ) | O(n) | |
| Edit Distance | String | O(mn) | O(3^max(m,n)) | O(mn) | |
| Coin Change | Optimization | O(amount×n) | O(2ⁿ) | O(amount) | |
| Matrix Chain | Optimization | O(n³) | O(2ⁿ) | O(n²) | |
| Rod Cutting | Optimization | O(n²) | O(2ⁿ) | O(n) | |
| Subset Sum | Decision | O(n×sum) | O(2ⁿ) | O(sum) | |
| Partition | Decision | O(n×sum) | O(2ⁿ) | O(sum) | |
| Egg Dropping | Optimization | O(n×k²) | O(2ⁿ) | O(n×k) | |
| Palindrome Partition | String | O(n²) | O(2ⁿ) | O(n²) | |
| Word Break | String | O(n²) | O(2ⁿ) | O(n) | |
| Max Subarray | Greedy/DP | O(n) | O(n²) | O(1) | |
| Longest Palindrome | String | O(n²) | O(2ⁿ) | O(n²) |
Legend & DP Concepts
n, m: Input size (length/count)
W: Knapsack capacity
k: Number of eggs/items
Memoization: Top-down DP approach
Tabulation: Bottom-up DP approach
Optimized: DP solution complexity
Naive: Recursive without memoization
Space: Auxiliary space for DP table
Pseudo-polynomial: Depends on value