Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Komplette Kombinationsmöglichkeiten einer Zahl ausgeben

  Alt 6. Mär 2006, 22:06
Ich habe es immer als ein Permutationsproblem verstanden. Hier ein modernisierter TP1 Code zum Erstellen aller Kombinationen n aus m:

Delphi-Quellcode:
procedure Permute(Head, Tail: String; s: TStrings; const size: Integer);
var
  i: Integer;
  Newhead, Newtail: String;
begin
  for i := 1 to Length(Tail) do
  begin
    Newhead := Head + Tail[i];
    Newtail := Tail;
    Delete(NewTail, i, 1);
    if (Newtail = '') or (Length(Newhead) = size)
      then s.Add(NewHead)
      else Permute(Newhead, Newtail, s, size);
  end;
end;
Der passende Aufruf zu deinem Beispiel:

Delphi-Quellcode:
begin
  sNumber := '123';
  s := TStringList.Create;
  Permute('', sNumber, s, Length(sNumber));
  WriteLn(s.Text);
  s.Free;
end;
Hier in der DP habe ich auch schon nicht-rekursive Lösungen gesehen.

Grüße vom marabu
  Mit Zitat antworten Zitat