| 1 | Initialize DP table | - | - | All zeros in first row and column | [[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]] |
| 2 | Compare chars | (1,1) | A vs B | No match, dp[1][1] = max(dp[0][1], dp[1][0]) = 0 | [[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],...] |
| 3 | Compare chars | (1,2) | A vs D | No match, dp[1][2] = max(dp[0][2], dp[1][1]) = 0 | [...updated dp table...] |
| 4 | Compare chars | (1,3) | A vs C | No match, dp[1][3] = 0 | [...] |
| 5 | Compare chars | (1,4) | A vs A | Match, dp[1][4] = dp[0][3] + 1 = 1 | [...] |
| 6 | Compare chars | (1,5) | A vs B | No match, dp[1][5] = max(dp[0][5], dp[1][4]) = 1 | [...] |
| 7 | Compare chars | (1,6) | A vs A | Match, dp[1][6] = dp[0][5] + 1 = 1 | [...] |
| 8 | Compare chars | (2,1) | B vs B | Match, dp[2][1] = dp[1][0] + 1 = 1 | [...] |
| 9 | Compare chars | (2,2) | B vs D | No match, dp[2][2] = max(dp[1][2], dp[2][1]) = 1 | [...] |
| 10 | Compare chars | (2,3) | B vs C | No match, dp[2][3] = 1 | [...] |
| 11 | Compare chars | (2,4) | B vs A | No match, dp[2][4] = max(dp[1][4], dp[2][3]) = 1 | [...] |
| 12 | Compare chars | (2,5) | B vs B | Match, dp[2][5] = dp[1][4] + 1 = 2 | [...] |
| 13 | Compare chars | (2,6) | B vs A | No match, dp[2][6] = max(dp[1][6], dp[2][5]) = 2 | [...] |
| 14 | Compare chars | (3,1) | C vs B | No match, dp[3][1] = max(dp[2][1], dp[3][0]) = 1 | [...] |
| 15 | Compare chars | (3,2) | C vs D | No match, dp[3][2] = 1 | [...] |
| 16 | Compare chars | (3,3) | C vs C | Match, dp[3][3] = dp[2][2] + 1 = 2 | [...] |
| 17 | Compare chars | (3,4) | C vs A | No match, dp[3][4] = max(dp[2][4], dp[3][3]) = 2 | [...] |
| 18 | Compare chars | (3,5) | C vs B | No match, dp[3][5] = max(dp[2][5], dp[3][4]) = 2 | [...] |
| 19 | Compare chars | (3,6) | C vs A | No match, dp[3][6] = 2 | [...] |
| 20 | Compare chars | (4,1) | B vs B | Match, dp[4][1] = dp[3][0] + 1 = 1 | [...] |
| 21 | Compare chars | (4,2) | B vs D | No match, dp[4][2] = max(dp[3][2], dp[4][1]) = 1 | [...] |
| 22 | Compare chars | (4,3) | B vs C | No match, dp[4][3] = max(dp[3][3], dp[4][2]) = 2 | [...] |
| 23 | Compare chars | (4,4) | B vs A | No match, dp[4][4] = max(dp[3][4], dp[4][3]) = 2 | [...] |
| 24 | Compare chars | (4,5) | B vs B | Match, dp[4][5] = dp[3][4] + 1 = 3 | [...] |
| 25 | Compare chars | (4,6) | B vs A | No match, dp[4][6] = max(dp[3][6], dp[4][5]) = 3 | [...] |
| 26 | Compare chars | (5,1) | D vs B | No match, dp[5][1] = max(dp[4][1], dp[5][0]) = 1 | [...] |
| 27 | Compare chars | (5,2) | D vs D | Match, dp[5][2] = dp[4][1] + 1 = 2 | [...] |
| 28 | Compare chars | (5,3) | D vs C | No match, dp[5][3] = max(dp[4][3], dp[5][2]) = 2 | [...] |
| 29 | Compare chars | (5,4) | D vs A | No match, dp[5][4] = max(dp[4][4], dp[5][3]) = 2 | [...] |
| 30 | Compare chars | (5,5) | D vs B | No match, dp[5][5] = max(dp[4][5], dp[5][4]) = 3 | [...] |
| 31 | Compare chars | (5,6) | D vs A | No match, dp[5][6] = max(dp[4][6], dp[5][5]) = 3 | [...] |
| 32 | Compare chars | (6,1) | A vs B | No match, dp[6][1] = max(dp[5][1], dp[6][0]) = 1 | [...] |
| 33 | Compare chars | (6,2) | A vs D | No match, dp[6][2] = max(dp[5][2], dp[6][1]) = 2 | [...] |
| 34 | Compare chars | (6,3) | A vs C | No match, dp[6][3] = max(dp[5][3], dp[6][2]) = 2 | [...] |
| 35 | Compare chars | (6,4) | A vs A | Match, dp[6][4] = dp[5][3] + 1 = 3 | [...] |
| 36 | Compare chars | (6,5) | A vs B | No match, dp[6][5] = max(dp[5][5], dp[6][4]) = 3 | [...] |
| 37 | Compare chars | (6,6) | A vs A | Match, dp[6][6] = dp[5][5] + 1 = 4 | [...] |
| 38 | Compare chars | (7,1) | B vs B | Match, dp[7][1] = dp[6][0] + 1 = 1 | [...] |
| 39 | Compare chars | (7,2) | B vs D | No match, dp[7][2] = max(dp[6][2], dp[7][1]) = 2 | [...] |
| 40 | Compare chars | (7,3) | B vs C | No match, dp[7][3] = max(dp[6][3], dp[7][2]) = 2 | [...] |
| 41 | Compare chars | (7,4) | B vs A | No match, dp[7][4] = max(dp[6][4], dp[7][3]) = 3 | [...] |
| 42 | Compare chars | (7,5) | B vs B | Match, dp[7][5] = dp[6][4] + 1 = 4 | [...] |
| 43 | Compare chars | (7,6) | B vs A | No match, dp[7][6] = max(dp[6][6], dp[7][5]) = 4 | [...] |
| 44 | Backtrack to find LCS | - | - | Start at dp[7][6] = 4, trace back to find sequence | LCS length = 4, sequence = "BCAB" |
| 45 | End | - | - | LCS found | Final LCS length: 4, sequence: BCAB |