Перейти к содержимому


Сочетание с повторением (нестандартный алгоритм)

сочетание с повторением

В этой теме нет ответов

#1 Я. Илья

    Пользователь

  • Пользователи
  • PipPip
  • 10 сообщений
  • ГородВитебск

Отправлено 15 января 2012 - 11:56

Нестандартный алгоритм сочетания с повторением. В состав обычного алгоритма входит сочетание ноликов ( перегородок ) и единичек. Этот алгоритм несколько иной.
Вот как его можно составить:
Само название "сочетание с повторением" говорит само за себя - это тоже самое, что и сочетание, но элементы могут повторяться. Таким образом, если взять сочетание 2 места по 3 элемента получим:
12
13
23
А если взять сочетание с повторением с таким параметром, то получим:
11
12
13
22
23
33
Вот сам код:
var n,m,i,j:longint;a,t:array[0..1000]of longint;
Begin
 
        read
(n,m);
       
{ввод массива элементов в t}
       
for i:=1 to m do //заполняем начальный уровень
        a
[i]:=1;
       
while a[0]=0 do //повторяем, пока укладываемся в м элементов
       
begin
       
for i:=1 to m do //выводим результат
        write
(t[a[i]]);
        writeln
;
        j
:=m;
       
while (j>0)and(a[j]=n) do //ищем с конца позицию меньше н
        j
:=j-1;
        a
[j]:=a[j]+1; //делаем её больше
       
for i:=j+1 to m do //заполняем до конца лучшим случаем, которым можно заполнить
        a
[i]:=a[j];
       
end;
End.






Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анононимных