Registriert seit: 16. Mär 2004
2.287 Beiträge
|
Re: Kreuzworträtsel und Rekursion
22. Jul 2005, 14:13
achsoooo....jetzt kapier ich was du genau willst
ok, neuer versuch
2 Möglichkeiten: Permutationen erstellen, oder anhand des arrays finden
Delphi-Quellcode:
procedure GetAll(const Arr: TArr; var Words: TStringlist);
procedure Find(const AktArr: TArr; const Rec,x,y:Integer; const T: String);
var Temp:String;
TA: TArr;
begin
TA:=AktArr;
Temp:=T;
if TA[x,y]='#' then Exit; //Wenn ungültig dann raus
Temp:=Temp+TA[x,y]; //zu string
if Rec=25 then Words.Add(Temp); //wenn tiefe maximum dann ergebnis
TA[x,y]:='#'; //falsch setzen
if x>1 then Find (TA,Rec+1,x-1,y,Temp);
if x<5 then Find (TA,Rec+1,x+1,y,Temp);
if y>1 then Find (TA,Rec+1,x,y-1,Temp);
if y<5 then Find (TA,Rec+1,x,y+1,Temp);
if (x>1) and (y>1) then Find (TA,Rec+1,x-1,y-1,Temp);
if (x>1) and (y<5) then Find (TA,Rec+1,x-1,y-1,Temp);
if (x<5) and (y>1) then Find (TA,Rec+1,x-1,y-1,Temp);
if (x<5) and (y<5) then Find (TA,Rec+1,x-1,y-1,Temp);
end;
var x, y:Integer;
begin
for x:=1 to 5 do
for y:=1 to 5 do
Find(Arr,1,x,y,'');
end;
Edit: jetzt syntaktisch korrekt....
»Unlösbare Probleme sind in der Regel schwierig...«
|