Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.586 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Ziehen mit Zurücklegen aber ohne Reihenfolge

  Alt 28. Mär 2009, 18:03
Wie wäre es so? (Geht ab Delphi 2005)
Delphi-Quellcode:
procedure TForm164.Button1Click(Sender: TObject);
type
  TMyCharSet = set of Char;

  procedure GetCombinations(const Data: TMyCharSet; Count: Integer;
    Results: TStrings; CurChar: Char; CurPrefix: String = ''; CurPos: Integer = 1);
  var
    Cur: Char;
  begin
    for Cur in Data do
      if Cur >= CurChar then
        if CurPos < Count then
          GetCombinations(Data, Count, Results, Cur, CurPrefix + Cur, CurPos + 1)
        else
          Results.Add(CurPrefix + Cur);
  end;

var
  ResultList: TStringList;
begin
  ResultList := TStringList.Create;
  GetCombinations(['A', 'B', 'C', 'D'], 3, ResultList, 'A');
  ShowMessage(ResultList.Text);
  ResultList.Free;
end;
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat