Составить из имеющихся четных цифр максимальное число, читающееся одинаково слева направо и наоборот - Pascal
Формулировка задачи:
На вход подается набор символов, оканчивающийся точкой. Количество символов не превышает 200.
Составить из имеющихся в тексте четных цифр максимальное число, которое читается одинаково как
слева направо, так и справа налево. Все цифры можно не использовать; незначащих нулей в числе не
должно быть. Если требуемое число составить нельзя, то вывести строку «NO»; если можно, то в
первой строке вывести строку «YES», а во второй — строку, изображающую найденное число.
Решение задачи: «Составить из имеющихся четных цифр максимальное число, читающееся одинаково слева направо и наоборот»
textual
Листинг программы
var s,s1:string;
c:char;
i,k,j:byte;
begin
readln(s);
s1:='';
for c:='0' to '9' do
if ord(c)mod 2=0 then
begin
k:=0;
for i:=1 to length(s) do
if s[i]=c then k:=k+1;
writeln(c,'=',k);
if k>0 then
begin
if s1='' then for j:=1 to k do s1:=s1+c
else if(length(s1)=1)and(k=1)and(c>s1[1])then s1:=c
else for j:=1 to k div 2 do
begin
insert(c,s1,1);
insert(c,s1,length(s)+1);
end;
end;
end;
if s1='' then write('NO')
else write(s1);
end.
Объяснение кода листинга программы
- Объявление переменных:
sиs1- строкиc- символi,k, иj- байты
- Чтение входной строки
s. - Инициализация пустой строки
s1. - Цикл по символам от '0' до '9', выбор каждой четной цифры.
- Если текущий символ
cявляется четной цифрой:- Инициализация переменной
kравной 0. - Цикл по индексам исходной строки
s, подсчет количества вхождений текущей цифрыcи вывод результата. - Если количество вхождений
kбольше 0: - Если строка
s1пустая, добавлениеkкопий текущей цифрыcв строкуs1. - Если длина строки
s1равна 1 иkравно 1, и текущая цифраcбольше чем первый символ строкиs1, присвоение строкиs1текущей цифрыc. - Для остальных случаев добавление половины количества вхождений текущей цифры
cвначало и в конец строкиs1.
- Инициализация переменной
- Если текущий символ
- Если строка
s1осталась пустой, вывод строкиNO. - Вывод строки
s1. Примечание: - Предполагается, что данный код реализует алгоритм поиска и составления максимального числа, состоящего из четных цифр, которое читается одинаково как слева направо, так и справа налево.
- Весь код написан на языке Pascal.