КОМБИНАТОРНОЕ ПРАВИЛО СЛОЖЕНИЯ

КОМБИНАТОРНОЕ ПРАВИЛО СЛОЖЕНИЯ

Большое количество комбинаторных задач решается с помощью двух основных правил: правила сложения и правила умножения.
Иногда все изучаемые случаи удается разбить на несколько групп, причем каждая искомая комбинация входит в одну и только одну группу. Очевидно, что в этом случае общее число комбинаций равно сумме чисел комбинаций во всех группах. Это утверждение и называется правило сложения.
Например, в 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 + nk.
Алгоритм решение задачи на языке Паскаль:
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.


Комментариев нет:

Отправить комментарий