dp · rows = "abcde", cols = "ace" · dp[i][j] = LCS(s1[:i], s2[:j])
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
2-D tabulation
▸1dp = (m+1) × (n+1) grid of 0 // row 0 / col 0 = empty prefix2for i in 1..m: for j in 1..n:3 if s1[i−1] == s2[j−1]:4 // match → extend diagonal5 dp[i][j] = dp[i−1][j−1] + 16 else:7 dp[i][j] = max(dp[i−1][j], dp[i][j−1])89return dp[m][n]
state
- s1 (rows)abcde
- s2 (cols)ace
- statedp[i][j] = LCS(s1[:i], s2[:j])