76
 правок
Изменения
м
→Специализация алгоритма для генерации следующего разбиения на слагаемые
<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>
