Etwa so etwas in dieser Art?
Sicher nicht perfekt, aber von der "Grundidee" her, sollte es passen.
Delphi-Quellcode:
procedure TForm7.Button1Click(Sender: TObject);
var
n: Integer;
current: array[0..3] of Integer;
begin
n := 4; // Beispielwert
Memo1.Clear;
Memo1.Lines.Add('Alle Lösungen mit einer Quersumme von ' + IntToStr(n) + ':');
FindeKombinationen(n, Length(current), 0, current);
end;
procedure TForm7.FindeKombinationen(n, k: Integer; idx: Integer; var current: array of Integer);
var
i: Integer;
Ausgabe: string;
begin
if (idx = k) then
begin
// Wenn das Array vollständig ausgefüllt ist, prüfe die Summe
if (current[0] + current[1] + current[2] + current[3] = n) then
begin
// Ausgabe in Memo
Ausgabe := '(';
for i := 0 to k - 1 do
begin
Ausgabe := Ausgabe + IntToStr(current[i]);
if i < k - 1 then
Ausgabe := Ausgabe + ', ';
end;
Ausgabe := Ausgabe + ')';
Memo1.Lines.Add(Ausgabe);
end;
Exit;
end;
for i := 0 to n do
begin
current[idx] := i;
FindeKombinationen(n, k, idx + 1, current);
end;