Олимпиадные задачи по программированию. Ч. 3. Лучшие решения. Ускова О.Ф - 29 стр.

UptoLike

Составители: 

29
бусинками; при этом суммарное количество бусинок в обоих
случаях равняется 8.
При снятии бусинок с каждого из концов белая бусинка
рассматривается как бусинка голубого или красного цвета по
ситуации, т.е . может сниматься как с голубыми, так и с
красными.
Напишите программу, которая:
1. Вводит данные из входного файла с именем bys.dat,
каждая строка которого содержит конфигурацию бус,
заданную в виде последовательности цветов и записывает
входные данные в выходной файл с именем bys.sol
2. Для каждой конфигурации бус определяет М
максимальное число собранных бусинок и положение
одной из оптимальных точек разрыва.
3. Выводит в качестве результата в выходной файл bys.dat
число М и точку разрыва.
Пример
входные данные выходные данные
bbwbrrrwbrbrrrrrb 10 between 16 and 17
РЕШЕНИЕ
Идея решения достаточно проста . Необходимо
проверить все возможные точки разрыва и для каждой точки
разрыва определить число снимаемых бусинок. В символьном
массиве A: array [1..3*N] of char будем хранить утроенную
конфигурацию бус. Это поможет избежать трудностей при
переходе через точку «склейки» бус, т.е . от бусинки N к бусинке
1 и наоборот. Так , например, бусам , изображенным на рисунке
3, будет соответствовать символьный массив А, приведенный на
рисунке 4.