Изменения

Перейти к: навигация, поиск

Получение следующего объекта

34 байта убрано, 12:11, 23 ноября 2014
Специализация алгоритма для генерации следующего сочетания
* Пойдём справа налево. Будем искать номер элемента, который отличается от предыдущего на <tex>2</tex>.
* Увеличим найденный элемент на <tex>1</tex>, и допишем в конец минимально возможный хвост, если такого элемента нет – на вход было дано последнее сочетание.
'''function''' nextChoose(var a:array[1..k] of integer): array[1..k] of integer;<font color=green>// <tex>n,k </tex> {{---}} параметры сочетания</font>
'''var'''
i,j : '''integer;''' b:array[1..k+1] of '''integer;'''
'''begin'''
'''for''' i := 1 '''to''' k '''do''' b[i]:=a[i]; b[k + 1] := n + 1; i := n;
'''while''' (i > 0) '''and''' ((b[i + 1] - b[i]) < 2) '''do'''
i := i - 1;-
'''if''' i > 0 '''then'''
'''begin'''
b[i] := b[i] + 1;+ '''for''' j := i + 1 '''to''' k '''do''' b[j] := b[j - 1] + 1; '''for''' i := 1 '''to''' k '''do''' a[i] := b[i]; return(a[1..k]);
'''end'''
'''else'''
return(null); '''end;'''
=== Пример работы ===
Анонимный участник

Навигация