• Задача4. «Палиндром»
    Решение на паскале(делфи) без модуля maths только sys utils
    Палиндром - это строка, которая читается одинаково как справа налево, так и слева направо.
    На входе записан набор больших латинских букв (не обязательно различных). Разрешается переставлять буквы, а также удалять некоторые буквы. Требуется написать программу, которая из данных букв по указанным правилам составит палиндром наибольшей длины, а если таких палиндромов несколько, то первый в алфавитном порядке.
    Формат входных данных
    В первой строке записано число N (1 <= N <= 100000). Во второй строке записана последовательность из N больших латинских букв (буквы записаны без пробелов).
    Формат выходных данных
    В единственной строке выдайте искомый палиндром.
    Примеры
    Вход Выход
    3
    AAB ABA
    6
    QAZQAZ AQZZQA
    6
    ABCDEF A

Ответы 1

  • var s,p1,p2:string;a:array['A'..'Z'] of byte;n,i,j,f:integer; c,sim:char;beginreadln(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.Пример:6QAZQAZAQZZQAPS. Программа проверялась только для коротких (String) строк. Для длинных нужно использовать AnsiString.
    • Автор:

      jasmine55
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years