h (i, j) = ответ для a[1..i] и b[1..j] h (i, j) = max h (i-1, j) h (i, j-1) h (i-1, j-1) + (a[i] == b[j]) Пример: a = 1 7 3 5 b = 5 1 1 7 3 7 a = 1 7 3 b = 5 1 1 7 3 7 a = 1 7 3 5 b = 5 1 1 7 3 a = 1 7 3 b = 5 1 1 7 3 3D: f (i, j, k) = max f (i-1, j, k) f (i, j-1, k) f (i, j, k-1) f (i-1, j-1, k-1) + (a[i] == b[j] == c[k]) LCS (a, b, c) = LCS (LCS (a, b), c) ??? Так не сработает, почему: a = 1 2 3 b = 2 3 1 2 3 c = 1 1 1 empty А если пропатчить? Самое длинное из: LCS (LCS (a, b), c) LCS (LCS (b, c), a) LCS (LCS (c, a), b) a = 1 2 3 4 4 4 8 9 7 ab: 2 3 4 7 b = 2 3 1 4 5 6 7 7 7 bc: 1 5 6 7 abc: 1 4 7 c = 1 1 1 5 6 4 7 8 9 ca: 1 4 8 9