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

Вопрос школьника по предмету Информатика

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

Ответ учителя по предмету Информатика

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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Похожие вопросы от пользователей