Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Работа с массивом

Автор: ds2207 8.12.2014 1:36

Даны натуральное число 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] и т.д.

Автор: Федосеев Павел 8.12.2014 1:51

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

Автор: ds2207 8.12.2014 1:59

Цитата(Федосеев Павел @ 7.12.2014 22:51) *

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

До написания самого кода не дошёл.Изначально пытался логически решить задачу,но в голову так ничего и не пришло.

Автор: Федосеев Павел 8.12.2014 2:11

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

Как-то так.