Hier eine Möglichkeit:
Delphi-Quellcode:
Procedure Variation (Const s,q : String; i,k,n : Integer);
Var
j : Integer;
Begin
if k=0 Then
Form1.memo1.Lines.Add(q) // 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;
Die Routine erstellt aus dem String s (Länge = n) alle k Teilmengen. Sei s='12345' und k=3, dann erfolgt der Aufruf mit:
Variation ('12345','',0,3,5)
[edit]Aufruf korrigiert. i ist Anfangs 0 (und nicht 1)[/edit]