prev[i][j] = pair(i, j - 1)
'''intfun''' printLCS(m: '''int''', n: '''int'''): ''<font color="green">// вывод SCS, вызывается как printLCS(m, n)</font>'' '''if''' i == 0 '''or''' m j =n ans = 0 [] ''<font color="green">// пришли к началу LCSмассив ответа </font>'' '''return''' '''ifwhile''' prev[i][j] == pair(i - 1, j - 1) ''<font color="green">// если пришли в lcs[i][j] из lcs[i - 1][j - 1], то x[i] == y[j], надо вывести этот элемент</font>'' printLCS(i - 1, j - 1) print x[i] 0 '''elseand'''j > 0 '''if''' prev[i][j] == pair(i - 1, j- 1) printLCSans.append(x[i]) i - = 1, j)-= 1
'''else'''
printLCS'''if''' prev[i][j] == pair(i- 1, j ) ans.append(x[i]) i - = 1 '''else''' ans.append(y[j]) j -= 1 '''while''' i > 0 ''<font color="green">// добавляем оставшиеся символы первой последовательности </font>'' ans.append(x[i]) i -= 1 '''while''' j > 0 ans.append(y[j]) ''<font color="green">// добавляем оставшиеся символы второй последовательности </font>'' j -= 1 '''reverse'''(ans) ''<font color="green">// разворачиваем последовательность, так как шли с конца </font>'' '''return''' ans ==Связь с наибольшей общей подпоследовательностью==