Обсуждение участника:Mogikan — различия между версиями
| Mogikan (обсуждение | вклад)   (Новая страница: «<code>  // b – список, содержащий разбиение данного числа, length – его размер.  '''function''' nextPartition(va...») | 
| (нет различий) | 
Текущая версия на 20:32, 22 декабря 2013
// b – список, содержащий разбиение данного числа, length – его размер.
function nextPartition(var b:list): list;
 var i : integer;
  begin   
   b[length] := b[length] - 1;
   b[length - 1] := b[length - 1] + 1;
   if b[length - 1] > b[length] then
    begin
      b[length - 1] := b[length - 1] + b[length];
      length := length - 1;
    end
   else
    begin
     i := 0;
     while b[length - 1] * 2 <= b[length + i] do
      begin
       b[length + i + 1] := b[length + i] - b[length - 1];
       b[length + i] := b[length - 1];
       i := i + 1;
      end;
     length := length + i;
    end;
   return(b[1..length]);
  end;
