hab noch ne idee:
mit folgender prozedur bekommst du alle möglichen kombinationen von 4 elementen, die der summe entsprechen
Delphi-Quellcode:
procedure TForm1.Perm(AnzElem,summe:word);
var i1,i2,i3,i4:word;
begin
memo1.Clear;
for i1:=1 to AnzElem do
for i2:=1 to AnzElem do
if not(i1=i2) and
(i1+i2<summe) then
for i3:=1 to AnzElem do
if not((i3=i1) or
(i3=i2))
and
(i1+i2+i3<summe) then
for i4:=1 to AnzElem do
if not((i4=i1) or
(i4=i2) or
(i4=i3))
and
(i1+i2+i3+i4=summe) then
memo1.Lines.Add(format('%3d + %3d + %3d + %3d = %3d',
[i1,i2,i3,i4,(i1+i2+i3+i4)]));
end;
kannst du dir ja die parmutationen in ein array speichern, dann brauchst du nur noch jeweils 4 von sich verschiedene auswählen und diese zu einem quadrat kombinieren, dann mußt du nur noch auf senkrechte und diagonale prüfen!