Als Thema haben wir Backtraking. Ich habe jetzt 3 Schleifen, die erste probiert alle Felder in der n-ten Zeile durch, die zweite alle Felder in der m-ten Spalte und der zweite probiert dann diagonal alles aus. Nun hängt sich das Programm leider immer auf wenn ich es starte. Der Fehler ist das er zu weit geht mit den Feldern.
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
var m,n,s,i,l,a:integer;
begin
Randomize;
m:=0;
n:=0;
s:=0;
i:=0;
l:=0;
for n:=0 to 7 do
begin
if Stringgrid1.Cells[m,n]= 'D' then
s:=s+1
else
for m:=0 to 7 do
begin
if Stringgrid1.Cells[m,n]= 'D' then
i:=i+1
else
For i:=0 to 7 do
begin
if Stringgrid1.Cells[m+i,n+i]= 'D' then
s:=s+1
else
begin
Damesetzten(s,i);
l:=l+1;
Label1.Caption:=Inttostr(l);
end;
end;
end;
end;
end;
procedure TForm1.Damesetzten(n, m: integer);
begin
Stringgrid1.Cells[m,n]:= 'D';
end;
end.