68
правок
Изменения
Нет описания правки
Например, '''''HELOLEH''''' является подпоследовательностью-палиндромом строки '''''HTEOLFEOLEH'''''.
'''Функция для вычисления длины палиндрома''':
*Границы исходной последовательности:*<tex> \mathrmmathtt{left = 0}</tex>*<tex> \mathrm{, right = N}</tex>
<code style = "display: inline-block;">
'''int palSubSeq'''palSubSeq(left:'''int''', right:'''int'''):
'''if''' L[left][right] == -1
'''if''' s[left] == s[right]
L[left][right] = '''palSubSeq'''(left + 1, right - 1) + 2
'''else'''
L[left][right] = <tex>max</tex>('''palSubSeq'''(left + 1, right), '''palSubSeq'''(left, right - 1))
'''return''' L[left][right]
</code>
'''Процедура для построения искомого палиндрома''':
*Границы исходной последовательности:*<tex> \mathrmmathtt{left = 0, right}</tex>*<tex> \mathrm{right = N}</tex>Границы искомой подпоследовательности-палиндрома, где правой границей будет длина найденного палиндрома:*<tex> \mathrmmathtt{palLeft=0}</tex>*<tex> \mathrm{, palRight=L[0][N-1]-1}</tex>
<code style = "display: inline-block;">
<font color=green>// palindrome {{---}} массив символов, где в palindrome[i] содержится символ искомой последовательности-палиндрома</font>
'''while''' left <tex>\leqslant </tex> right
'''if''' left == right '''and''' L[left][right] == 1