Изменения

Перейти к: навигация, поиск
Нет описания правки
== Определения =={{Определение|definition='''Палиндромом''' (англ. "<i>Palindrome</i>") называется строка, которая одинаково читается как слева направо, так и справа налево.}}{{Определение|definition='''Подпоследовательностью-палиндромом данной строки''' (англ. "<i>Largest Palindromic Subsequence</i>") называется последовательность символов из данной строки, не обязательно идущих подряд, являющаяся палиндромом. }}
Например, '''''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>
'''palChars'''(left:'''int''', right:'''int''', palLeft:'''int''', palRight:'''int'''):
'''while''' left <tex>\leqslant </tex> right
'''if''' left == right '''and''' L[left][right] == 1
68
правок

Навигация