КОМБИНАТОРНОЕ
ПРАВИЛО СЛОЖЕНИЯ
Большое количество
комбинаторных задач решается с помощью двух основных правил: правила сложения и
правила умножения.
Иногда все изучаемые
случаи удается разбить на несколько групп, причем каждая искомая комбинация
входит в одну и только одну группу. Очевидно, что в этом случае общее число
комбинаций равно сумме чисел комбинаций во всех группах. Это утверждение и
называется правило сложения.
Например, в 9 класс ходят 11 юношей и 9 девушек. Тогда выбрать одного ученика можно 11 + 9 =
20 способами.
Правило легко распространяется
на случай выбора не двух, а большего числа элементов.
Если
объект А может быть выбран m
различными способами, а другой объект В можно выбрать n различными способами, причем ни один
из способов выбора объекта А не совпадает ни с одним из способов выбора объекта
B, то выбор «либо А,
либо В» можно осуществить m
+ n способами.
Более
общим образом, если объект а1 можно выбрать n1 способами, объект а2
можно выбрать n2
способами, … , объект ak можно выбрать nk способами, тогда выбор «либо a1, либо a2, …, либо ak» можно
осуществить n1+n2+…+nk.
Алгоритм решение задачи на языке Паскаль:
uses crt;
var a: ARRAY [1..100] of integer;
i, n, k: integer;
begin
readln(n);
for i:=1 to n do readln(a[i]);
for i:=1 to n do k:=k+a[i];
writeln(k);
end.
Если
некоторые способы выбора объектов А и В совпадают и число совпадений равно k, то общее число различных
способов выбора либо объекта А, либо В равно m + n – k.
Алгоритм решение задачи на языке Паскаль:
uses crt;
var a: ARRAY [1..100] of integer;
i, n, k, b, c: integer;
begin
write('Введите ко-во элементов');
readln(n);
write('Введите значение элементов');
for i:=1 to n do readln(a[i]);
write('Элементы двух множеств совпадают? (Если да, то введите 1');
readln(b);
if b = 1 then begin
write ('Введите ко-во совпадающих элементов: ');
read(c);
end;
for i:=1 to n do k:=k+a[i];
if b = 1 then k:=k-c;
writeln('Ко-во элементов', k);
end.
Алгоритм решение задачи на языке Паскаль:
uses crt;
var a: ARRAY [1..100] of integer;
i, n, k, b, c: integer;
begin
write('Введите ко-во элементов');
readln(n);
write('Введите значение элементов');
for i:=1 to n do readln(a[i]);
write('Элементы двух множеств совпадают? (Если да, то введите 1');
readln(b);
if b = 1 then begin
write ('Введите ко-во совпадающих элементов: ');
read(c);
end;
for i:=1 to n do k:=k+a[i];
if b = 1 then k:=k-c;
writeln('Ко-во элементов', k);
end.
Комментариев нет:
Отправить комментарий