| 1 | Initialize DP table | - | - | All zeros | [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] |
| 2 | Compare chars | (1,1) | A vs A | dp[1][1] = dp[0][0] + 1 = 1 | [[0,0,0,0],[0,1,0,0],[0,0,0,0],[0,0,0,0]] |
| 3 | Compare chars | (1,2) | A vs B | dp[1][2] = max(dp[0][2], dp[1][1]) = 1 | [[0,0,0,0],[0,1,1,0],[0,0,0,0],[0,0,0,0]] |
| 4 | Compare chars | (1,3) | A vs C | dp[1][3] = max(dp[0][3], dp[1][2]) = 1 | [[0,0,0,0],[0,1,1,1],[0,0,0,0],[0,0,0,0]] |
| 5 | Compare chars | (2,1) | B vs A | dp[2][1] = max(dp[1][1], dp[2][0]) = 1 | [[0,0,0,0],[0,1,1,1],[0,1,0,0],[0,0,0,0]] |
| 6 | Compare chars | (2,2) | B vs B | dp[2][2] = dp[1][1] + 1 = 2 | [[0,0,0,0],[0,1,1,1],[0,1,2,0],[0,0,0,0]] |
| 7 | Compare chars | (2,3) | B vs C | dp[2][3] = max(dp[1][3], dp[2][2]) = 2 | [[0,0,0,0],[0,1,1,1],[0,1,2,2],[0,0,0,0]] |
| 8 | Compare chars | (3,1) | C vs A | dp[3][1] = max(dp[2][1], dp[3][0]) = 1 | [[0,0,0,0],[0,1,1,1],[0,1,2,2],[0,1,0,0]] |
| 9 | Compare chars | (3,2) | C vs B | dp[3][2] = max(dp[2][2], dp[3][1]) = 2 | [[0,0,0,0],[0,1,1,1],[0,1,2,2],[0,1,2,0]] |
| 10 | Compare chars | (3,3) | C vs C | dp[3][3] = dp[2][2] + 1 = 3 | [[0,0,0,0],[0,1,1,1],[0,1,2,2],[0,1,2,3]] |
| 11 | End | - | - | LCS length = dp[3][3] = 3 | Final DP table as above |