(Moderator)
Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
Delphi 2007 Enterprise
|
Re: alle Tupel einer Variation ermitteln
8. Sep 2006, 14:28
Ach so: Dann schalte einen Permutator hinter jedes Element der 'Kombination', z.B. den hier (Der Code ist von Horst_H, glaub ich):
Delphi-Quellcode:
Function NthPermutation (const aString : AnsiString; aCount : Integer) : AnsiString;
Var
pos, i, n : Cardinal;
chTemp : char;
Begin
n := Length(aString);
result := aString;
for i := n downto 2 do
begin
pos := acount mod i +1;
//switch
chTemp := result[i];
result[i] := result[Pos];
result[Pos] := chTemp;
acount := acount div i;
End;
End;
Procedure Variation (Const s,q : String; i,k,n : Integer);
Var
j : Integer;
Begin
if k=0 Then
For j:=1 to Fakultaet(k) do
Form1.memo1.Lines.Add(NThPermutation (q,j)) // Teilmenge gefunden, irgendwo muss sie ja hin
else
For j:=i+1 to n - k + 1 do
Variation (s,q+s[j],j,k-1,n)
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
|
|
Zitat
|