Изменения

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

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

157 байт добавлено, 19:49, 22 декабря 2013
Специализация алгоритма для генерации следующего сочетания
* Пойдём справа налево. Будем искать номер элемента, который отличается от предыдущего на 2.
* Увеличим найденный элемент на 1, и допишем в конец минимально возможный хвост, если такого элемента нет – на вход было дано последнее сочетание.
'''function''' nextChoose(var a:array[1..k+1] of integer): array[1..k] of integer; // n,k - параметры сочетания. '''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''' ((ab[i + 1] - ab[i]) < 2) '''do'''
i := i - 1;
'''if''' i > 0 '''then'''
'''begin'''
ab[i] := ab[i] + 1;
'''for''' j := i + 1 '''to''' k '''do'''
ab[j] := ab[j - 1] + 1; '''for''' i := 1 '''to''' k '''do''' a[i]:=b[i];
return(a[1..k]);
'''end'''
76
правок

Навигация