Реферат: Генерация комбинаторных объектов
begin
for i:=1 to N do write(alphabet[b[i]]);
writeln;
end;
begin
readln(K);
N:=0;
for i:=1 to K do
begin read(NN[i]); N:=N+NN[i]; end;
i:=0;
for j:=1 to k do
for m:=1 to NN[j]
do begin Inc(i); B[i]:=j; end;
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.
6 Сочетания с повторениями
Для множества символов от A до C и размера M=3 сочетания с повторениями будут следующими:
CCC BCC BBC BBB ACC ABC ABB AAC AAB AAA
Общее количество сочетаний = (N+M-1)! / (M!*(N-1)!)