print2. Палиндром

Задача на динамическое программирование. Сначала необходимо построить таблицу `T`, в которой в ячейке `T[i,j]` хранится минимальное количество добавляемых символов к строке `s[i…j]` для получения палиндрома. `T[i,j]\ =\ T[i+1,j-1]`, если `s[i]=s[j]`, `T[i,j]\ =\ min(T[i,j-1],T[i+1,j])\ +\ 1` если `s[i]≠s[j]`. Выполняя обратную трассировку по таблице `T` легко найти палиндром-результат. "Жадное" частичное решение, выполняющее анализ строки одновременно слева и справа и добавляющее в результат меньший из концов в случае несовпадения, дает 15 баллов.
loading