конвейер
Конвейер
адача
8. Дана
последовательность a с
элементами из множества {0,1}. Проводятся
следующие действия. Если a
имеет вид 1,0,1,… , то она укорачивается на
первые три элемента. В противном случае
начальный элемент последовательности
переносится в её конец. Указанные действия
повторяются до тех пор, пока имеется
возможность укоротить текущую
последовательность. Требуется составить
рекурсивную программу, имитирующую эти
действия конвейер возвращающую по исходной
последовательности a
результирующую последовательность b
или сообщение, что b -
пустое множество.
Решение.
Удаление из a первых трех
элементов конвейер перемещение начального
элемента в конец a назовем
соответственно d-операцией
и m-операцией. В
постановке задачи фактически уже описана
основная идея рекурсивного алгоритма её
решения. После совершения конвейер d-операции,
и m-операции мы снова
должны решать исходную задачу для вновь
полученной последовательности. В этом и
состоит суть декомпозиции. Уточнений
требует лишь правило завершения вычислений,
то есть выделение рекурсивной базы. Ясно,
что к базе следует отнести все
последовательности длины 1 конвейер 2, конвейер также
пустую последовательность. Но этим база не
будет исчерпана. В неё должна входить,
например, последовательность 1, 1, 1, 0, 0, 0. Как
же описать всю базу? Проще всего это сделать
динамически. Если в процессе требуемых в
постановке задачи преобразований
последовательности a длины n
(n³ 3) n
раз подряд была выполнена m-операция
(без d-операций), то
мы снова получим a . Это
означает, что дальнейшие преобразования a
будут совершаться по циклу, укоротить эту
последовательность уже нельзя, конвейер мы должны
отнести её к базе.
Именно
эти идеи конвейер реализуются рекурсивной
функцией jus(a ,k).
Начальное значение вспомогательного
параметра k равно
нулю конвейер увеличивается на единицу при каждой m-операции.
При совершении каждой d-операции
значение k снова
становится равным нулю. Этим
обеспечивается механизм отслеживания
элементов базы -
последовательностей длины n,
для которых подряд n
раз совершалась m-операция.
Контрольные
примеры:
разделы
фейрверк вечеринка
урок охота
man гильза
кислотостойкий краска
тренировка память
нужный билет
стеклянный перегородка
химчистка доставка
спецобувь оптом
новосельский доломит
кулер 754
эксимер лазер
гайковерт
дихроичное зеркало
автоматический резка
телевизионный антенна
жила кострома
силуэт слимент лифт
дренаж
бак накопитель
фасадный покрытие
купить джойстик
управление иваново
вызов водитель
вагонка половой доска
холодильник оптом
антенна
renu multiplus 355мл
рак кишка
нейминг
стимулирующий лотерея
бюгельные зубной протез
электроинструмент metabo
венеролог
сушильный машина asko
hi-fi
сдача ielts
summer кухонный
li-da
iridium motorola
купить электрооткрывалку
распыление ароматизатор
вспучивающийся краска
герб область
флюрисцентная краска
зубной боль
концентрирование кислорода
время архангельск
шарошка алмазный
кулер 478
программа шифрование
одевание бахила
диспетчеризация
агат кристи билет
колодец канализационный пластиковый
купить ниппель радиат
крановый тележка
купить ниппель радиат
конвейер