Warning: Illegal string offset 'html' in /var/www/lvp37/data/www/lvp37.ru/cache/skin_cache/cacheid_1/skin_topic.php on line 909
Сочетание с повторением (нестандартный алгоритм) - олимпиадники-информатики

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


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

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

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

#1 Я. Илья

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

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

Отправлено 15 January 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 анононимных