Изменения

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

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

146 байт добавлено, 16:38, 12 декабря 2013
м
Специализация алгоритма для генерации следующего сочетания
* Пойдём справа налево. Будем искать номер элемента, который отличается от предыдущего на 2.
* Увеличим найденный элемент на 1, и допишем в конец минимально возможный хвост, если такого элемента нет – на вход было дано последнее сочетание.
  procedure nextChoose(var a:array[k 1..N+ 1] := n + 1of integer); i := // n;,k - параметры сочетания. '''whilevar''' (i > 0) '''and,j : ''' ((a[i + 1] - a[i]) < 2) '''do''' i := i - 1integer; '''if''' i > 0 '''then'''
'''begin'''
a[k + 1] := n + 1; i := n; '''while''' (i > 0) '''and''' ((a[i + 1] - a[i]) < 2) '''do''' i := i - 1; '''if''' i > 0 '''then''' '''begin''' a[i] := a[i] + 1; '''for''' j := i + 1 '''to''' k '''do''' a[j] := a[j - 1] + 1; '''Вывод массива write(a'''[1..n]); '''end''' '''else''' write('null'); '''Вывести “No answer”end;'''
=== Пример работы ===
76
правок

Навигация