Moin,
Ich soll das 8 Damen Problem lösen.
Ich komme aber beim Backtracking Part nicht weiter.
Das ist was ich bis jetzt habe:
Delphi-Quellcode:
procedure backtrack;
var x,y : integer;
found: Boolean;
begin
posi[LastQX,LastQY] := 0;
found := False;
AnzahlKoenigen := 0;
for y := 0 to Kaestchen-1 do
for x := 0 to Kaestchen-1 do
if posi[x,y] = 1 then AnzahlKoenigen := AnzahlKoenigen+1; // Schaue wie viele Damen auf den Feld sind.
for y := 0 to Kaestchen-LastQY do begin
for x := 0 to Kaestchen do
If (isValid(x,LastQY+y)) and (LastQX <> x) then begin // Schau ob es eine Valide Postition ist und nicht
posi[x,LastQY+y] := 1; // die selbe wie vorher.
found := True;
AnzahlKoenigen := AnzahlKoenigen+1;
break;
end;
if found then break;
end;
if found = false then begin //Wenn keine neue position gefunden werden kann suche
for y := Kaestchen downto 0 do // die nächste Dame und speichere die Position.
for x := 0 to Kaestchen do
if posi[x,y] = 1 then begin
LastQX := x;
LastQY := y;
break;
end;
end;
end;
Ich hoffe ihr könnt wir helfen.
MfG,
Blacky