Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемАнтонина Тотменина
1 Пример задачи с решением C4 (высокий уровень, время – 60 мин)
2 Пример задания: На вход программы подаются английские прописные буквы. Ввод этих символов заканчивается точкой (другие символы, отличные от «.» и буквы «А»… «Z», во входных данных отсутствуют. Требуется написать программу, которая будет определять эти буквы так, полученное сочетание читалось одинаково как слева направо, так и справа налево. Точка при этом не учитывается. Если это не возможно, то программа должна вывести на экран слово «NО». А если это невозможно, то в первой строке следует вывести слово «YES», а во второй – искомое сочетание букв. Если таких сочетаний несколько, программа должна выводить первое в алфавитном порядке возможное сочетание. Например, пусть на вход подаются следующие символы: МАМА. В данном случае программа должна вывести YES АММА
3 Input.txtOutput.txt МАМА. YES АММА Пример входных данных:
4 Программа читает все входные символы до точки один раз, подсчитывая массив, хранящем 26 целых чисел, количество каждой из букв. Сами входные символы при этом не запоминаются. Затем проверяется, сколько в этом массиве нечетных элементов. Если больше одного, то задача решения не имеет. При наличии решения сначала печатается половина имеющихся букв А (если таковые имеются и их количество четно), затем В и т.д. до Z, потом печатается буква, которая встречается во входных данных нечетное число раз (столько же раз она и печатается), а затем – оставшаяся половина букв Z (если таковые имеются и их количество четно), Y, и т.д. до А. Баллы начисляются только за программу, которая решает задачу хотя бы для одного частного случая (например, для строк, состоящих не более чем из 255 символов) или которая умеет определять, имеет ли задача решение. Решение:
5 Объявление массива Var p:array[A..Z] of integer; c, c_odd:char; I,k: integer;
6 Блок считывания данных (файлы input и output готовы заранее) Begin Assign(input, input.txt); Reset(input); Assign(output, output.txt); Rewrite(output); For c:=A to Z do a[c]:=0; Read(c); While c . do Begin a[c]:=a[c]+1; Read(c); End;
7 k:=0;{количество букв, встречающихся нечетное число раз} For c:=A to Z do If a[c]mod 2= 1 then Begin k:=k+1; c_odd:=c End; If k>1 then (NO) else writeln (YES);
8 For c:=A to Z do If a[c] mod 2 = 0 then For i:=1 to a[c] div 2 do Write(c); If k=1 then For i:= 1 to a[c_odd] do Write(c_odd); For c:=Z downto A do If a[c] mod 2 = 0 then For i:=1 to a[c] div 2 do Write(c); End; end.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.