Einzelnen Beitrag anzeigen

Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: Kreuzworträtsel und Rekursion

  Alt 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...«
  Mit Zitat antworten Zitat