1

指定された整数値のパーティションを生成するには、Delphi でアルゴリズムが必要です。

例: 13 の場合、パーティションの最大値として 5 を指定すると、5,5,3 になります。最大パーティション値として 4 が指定されている場合、結果は 4,4,4,1 のようになります。

4

1 に答える 1

6

divと を使用して問題を解決するのは簡単modです。これ以上の説明は必要ないと思うプログラムの例を次に示します。

program IntegerPartitions;
{$APPTYPE CONSOLE}

function Partitions(const Total, Part: Integer): TArray<Integer>;
var
  Count: Integer;
  Rem: Integer;
  i: Integer;
begin
  Assert(Total>0);
  Assert(Part>0);

  Count := Total div Part;
  Rem := Total mod Part;
  if Rem=0 then
    SetLength(Result, Count)
  else
    SetLength(Result, Count+1);
  for i := 0 to Count-1 do
    Result[i] := Part;
  if Rem<>0 then
    Result[Count] := Rem;
end;

var
  Value: Integer;

begin
  for Value in Partitions(13, 5) do
    Writeln(Value);
  Readln;
end.
于 2013-02-21T11:40:21.420 に答える