Skip to content

2D DP Problems

Two-dimensional DP problems have two state variables — typically representing indices into two arrays/dimensions. The DP table is a 2D matrix dp[i][j].


#ProblemPatternDifficulty
1Unique PathsGrid traversalMedium
20/1 KnapsackTake/skip itemsMedium
3Longest Common SubsequenceString alignmentMedium
4Edit DistanceString transformationHard

Unique Paths: dp[i][j] = dp[i-1][j] + dp[i][j-1] (sum of paths)
Knapsack: dp[i][w] = max(dp[i-1][w], dp[i-1][w-wt] + val) (skip or take)
LCS: match? dp[i-1][j-1]+1 : max(dp[i-1][j], dp[i][j-1]) (match or skip)
Edit Distance: match? dp[i-1][j-1] : 1+min(delete, insert, replace) (3 ops)

Start with Unique Paths →