Permutationen finden
-
Ich habe ein DynamicArray<int> und brauche nun alle Permutationen der Integer Variablen.
Vor längerer Zeit hatte ich mal einen rekursiven Algorithmus, der das für Zeichenketten konnte, aber ich kann mich da nicht mehr reindenken
Ich hatte schon überlegt, das DynamicArray in einen Vektor umzuwandeln und die STL Funktion next_permutation() zu benutzen, aber ich hätte es doch lieber direkt.Die Permutationen sollen dann in ein Memo-Feld geschrieben werden. Wie kriege ich das hin?
-
Hallo,
auf http://www.gwt.sok.th.schule.de/thillm_ak/t4.htm#perm habe ich folgenden Pseudocode gefunden:
Procedure PERM(m: integer);
Wenn m=1 dann AUSGABE,
sonst:
Für i:=m abwärts bis 1 tue
TAUSCH(a[i], a[m]);
PERM(m-1);
TAUSCH(a[i],a[m]);
End; (for)unter http://www.mathematik.uni-ulm.de/sai/ss99/prog/skript/rekursion-23.html gibt es auch eine fertige Funktion, allerdings in Pascal.
Allerdings gibt es ein Funktion in der C++ Standardbibliothek next_permutation(), die wird hier http://marknelson.us/2002/03/01/next-permutation/
erkläret.Gruß
Markus
-
Hallo,
Ich würde an deiner Stelle sowieso DynamicArray nicht verwenden. das ist eh nur aus Kompatibilitätsgründen mit Pascal drin. Nimm statt dessen Vector (oder list). Bei den Standard-C++ Bibliotheken hast du mehr Möglichkeiten.