Изменения

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

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

367 байт добавлено, 16:47, 12 декабря 2013
м
Специализация алгоритма для генерации следующего разбиения на слагаемые
<code>
// Алгоритм работает только для лексико-графического порядка. // b – массив чисел разбиения, dlin содержащий разбиение данного числа, length – его размер. procedure '''nextPartition'''(var b:array[1..length] of integer); '''var''' i : '''integer;''' '''begin''' b[dlinlength] := b[dlinlength] - 1; b[dlin length - 1] := b[dlin length - 1] + 1; '''if''' b[dlin length - 1] > b[dlinlength] '''then''' '''begin''' b[dlin length - 1] := b[dlin length - 1] + b[dlinlength]; dlin length := dlin length - 1; '''end''' '''else''' '''begin''' i := 0; '''while''' b[dlin length - 1] * 2 <= b[dlin length + i] '''do''' '''begin''' b[dlin length + i + 1] := b[dlin length + i] - b[dlin length - 1]; b[dlin length + i] := b[dlin length - 1]; i := i + 1; '''end;''' dlin length := dlin length + i; '''end;''' write(b[1..length]; '''Выводим ответ.end;'''
</code>
76
правок

Навигация