Помощь - Поиск - Пользователи - Календарь
Полная версия: Работа с массивом
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ds2207
Даны натуральное число N и символы S[1],...,S[n].Преобразовать последовательность S[1],...,S[n], добавив к ней наименьшее число символов S[n+1],...,S[m] так, чтобы последовательность S[1],...,S[m] стала палиндромом: S[1]=S[m],S[2]=S[m-1] и т.д.
Федосеев Павел
Ты ведь уже пытался решить задачу. Покажи попытки решения.
ds2207
Цитата(Федосеев Павел @ 7.12.2014 22:51) *

Ты ведь уже пытался решить задачу. Покажи попытки решения.

До написания самого кода не дошёл.Изначально пытался логически решить задачу,но в голову так ничего и не пришло.
Федосеев Павел
Навскидку приходит такой порядок действий:
1. Берём последний символ исходной последовательности S[n] и перебирая символы от 1 до (n-1) ищем его.
2. Если не нашёлся, то S[n] находится в центре палиндрома и нужно добавить символы от (n-1) до 1 в обратном порядке.
3. Если нашелся, то проверяем гипотезу о том, что символы от S[i] (который равен S[n]) до S[n] - палиндром. Если не палиндром, то продолжаем перебор. Если палиндром, то добавляем символы от (i-1) до 1.

Как-то так.















Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.