В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык

«палиндром» решение на паскале(делфи) без модуля maths только sys utils палиндром - это строка, которая читается одинаково как справа налево, так и слева направо. на входе записан набор больших латинских букв (не обязательно различных). разрешается переставлять буквы, а также удалять некоторые буквы. требуется написать программу, которая из данных букв по указанным правилам составит палиндром наибольшей длины, а если таких палиндромов несколько, то первый в алфавитном порядке. формат входных данных в первой строке записано число n (1 < = n < = 100000). во второй строке записана последовательность из n больших латинских букв (буквы записаны без пробелов). формат выходных данных в единственной строке выдайте искомый палиндром. примеры вход выход 3 aab aba 6 qazqaz aqzzqa 6 abcdef a

Ответ:
denisfilin2
denisfilin2
06.10.2020 06:26
Var s,p1,p2:string;
a:array['A'..'Z'] of byte;
n,i,j,f:integer; c,sim:char;
begin
readln(n);
readln(s);
for c:='A' to 'Z' do a[c]:=0;
for i:=1 to length(s) do
 a[s[i]]:=a[s[i]]+1;
p1:=''; p2:=''; f:=0;
for c:='A' to 'Z' do
 begin
 for j:=1 to a[c] div 2 do
  begin p1:=p1+c; p2:=c+p2; end;
 if (a[c] mod 2=1)and(f=0)
  then begin sim:=c; f:=1; end;
 end;
if f=1 then p1:=p1+sim;
p1:=p1+p2;
writeln(p1);
end.

Пример:
6
QAZQAZ
AQZZQA

PS. Программа проверялась только для коротких (String) строк. Для длинных нужно использовать AnsiString.
0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?