Реферат: Генерация комбинаторных объектов
for i:=1 to n1-1 do b[i]:=0;
for i:=n1 to n1+m-1 do b[i]:=1;
WriteB;
while (true) do
begin
i:=N;
while (i>0) and (B[i]>=B[i+1]) do i:=i-1;
if i=0 then exit;
for j:=i+1 to N do
if (B[j]>B[i]) then K:=j;
SwapB(i,k);
for j:=i+1 to (i+ ((N+1-i) div 2)) do
SwapB(j,N+i+1-j);
WriteB;
end;
end.
Пояснения к программе:
1. Начальная перестановка формируется последовательно из N1-1 нулей и M единиц.
2. В программе вывода перестановки WriteB осуществлены изменения, соответствующие замыслу (нули - разделители, единицы - символы). Если текущий элемент массива B равен 0, то "становится активным" следующий символ. Если текущий символ массива B равен 1, то текущий активный символ выводится на экран.
Заключение
Все программы для большей наглядности в качестве иллюстрации оперируют с массивом символов от A до Z. Очевидно, что предлагаемые алгоритмы и программы практически не изменяются при работе с массивами элементов любого типа, требуемого по условиям задачи (например, массивами чисел, слов, геометрических фигур и т.д.)
Литература
1. Абдеев Р.Ф. Философия информационной цивилизации. - М.: Владос, 1994.
2. Адамар Ж. Исследование психологии процесса изобретения в области математики. - М.: Сов. радио, 1970.
3. Болтянский В.Г. Информатика и преподавание математики// Математика в школе. 1989. № 4.-С.86-90
4. Вейценбаум Дж. Возможности вычислительных машин и человеческий разум. - М.: Радио и связь, 1982.
5. Вирт Н. Алгоритмы+Структуры данных=Программа. - М.:Мир, 1989
6. Вирт Н. Систематическое программирование: Введение. - М.: Мир, 1977.
7. Громов Г.Р. Очерки информационной технологии. - М.: ИнфоАрт, 1993.
8. Дейкстра Э. Дисциплина программирования. - М.: Мир, 1978.
9. Ильенков Э. В. Философия и культура. - М.: Полит. лит., 1991.
10. Йодан Э. Структурное проектирование и конструирование программ. - М.: Мир, 1979.
11. Майерс Г. Надежность программного обеспечения. - М.: Мир, 1980.
12. Махмутов М.И. Организация проблемного обучения в школе. - М., 1986.