指定された整数値のパーティションを生成するには、Delphi でアルゴリズムが必要です。
例: 13 の場合、パーティションの最大値として 5 を指定すると、5,5,3 になります。最大パーティション値として 4 が指定されている場合、結果は 4,4,4,1 のようになります。
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.