Изменения

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

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

210 байт убрано, 13:25, 26 ноября 2014
Специализация алгоритма для генерации следующего сочетания
* Пойдём справа налево. Будем искать номер элемента, который отличается от предыдущего на <tex>2</tex>.
* Увеличим найденный элемент на <tex>1</tex>, и допишем в конец минимально возможный хвост, если такого элемента нет – на вход было дано последнее сочетание.
'''function''' nextChoose(var a:arrayint[1..k] of integera): arrayint[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--
'''if''' i > 0 '''then''' '''begin'''
b[i]++
'''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'''
=== Пример работы ===
Анонимный участник

Навигация