Лабораторные работы / Захаров / Лабораторная работа 5
.docЛабораторная работа № 5.
Захаров Антон
А – 13 – 08
Вариант № 10.
Найти все , где N=10 – номер варианта, а также сами сочетания и размещения.
Число различных сочетаний: Число различных размещений:
Алгоритм вычисления числа сочетаний и размещений:
Для вычисления факториала F числа S используем простой цикл:
F:=1;
для i от 1 до S
F:=F*i;
Используя этот алгоритм вычисления факториала, считаем требуемые составляющие формул (1) и (2), подставляем их в эти формулы и получаем искомое число сочетаний и размещений.
Подобные расчеты повторяем для всех
Алгоритм нахождения всех сочетаний :
для i от 1 до k
A[i]:=i; {A – первое сочетание}
p:=k;
пока (p1)
начало цикла
вывод (A[1],A[2]…A[k]);
если (A[k]=n)
то p:=p – 1;
иначе p:=k; если (p1)
то
для i от k до p шаг (–1)
A[i]:=A[p] + i – p + 1;
{A – очередное сочетание}
конец цикла
Словесное описание алгоритма:
-
Заполняем все k позиций множества А элементами n-элементного множества в порядке их возрастания (лексикографическом).
-
p:=k;
-
Если p<1, то ВЫХОД.
-
Иначе получили очередное сочетание А. ВЫВОД А.
-
Если последний элемент множества А равен n, то p:=p – 1, иначе p:=k.
-
Если p1, то изменить элементы множества А по формуле
-
Повторить пункты 3 – 7.
Алгоритм нахождения всех размещений :
S[1]:=1; k:=1;
пока (k>0)
начало цикла
пока (A[k]<n)
начало цикла
A[k]:=S[k]; S[k]:=S[k]+1;
пока (sk<n и не S[k]A)
начало цикла
S[k]:=S[k]+1;
если (k=n)
то
вывод (A[1], A[2],..., A[n]);
иначе
k:=k+1;
S[k]:=i;
пока (S[k]<n и не S[k]A)
S[k]:=S[k]+1;
конец цикла
конец цикла
k:=k-1;
конец цикла
Словесное описание алгоритма:
-
S[1]:=1, k:=1;
-
Если k0, то ВЫХОД
-
Иначе:
-
Если S[k]>n, то перейти к пункту 4.
-
Иначе
-
А[k]:=S[k]; S[k]:=S[k]+1;
Изменить S по следующему правилу:
Если S[k]n и
-
Если k=n, то ВЫВОД А (очередное размещение)
-
Иначе k:=k+1; S[k]:=1;
Изменить S по следующему правилу:
Если S[k]n и
-
Вернуться к пункту 3.1.
-
k:=k–1;
-
Вернуться к пункту 2.