Permutation

Hallo,

Ich habe das Problem eine Menge von n Zahlen
über m Stellen zu permutieren wie z.B
n=4
m=2

Erg:
1 2
2 1
1 3
3 1
4 1
1 4
2 3 usw.

Ich habe versucht im Netz einen derartigen Algorithmus zu finden, hatte aber keinen Erfolg. Kann mir jemand von euch helfen.

Die Sprache ist mir dabei ziemlich egal (sprich Perl, C, VB, Cobol oder Pseudocode)

Danke im Voraus.

Hallo,
ich glaube, ich kann Dir helfen.
Ich hoffe, ich habe Dich richtig begriffen
In Deinem Beispiel sind
die n=4 Zahlen 1, 2, 3 und 4
Jetzt suchst Du alle 2-stelligen Zahlen aus diesen 4 Ziffern. Stimmts?
11, 12, 13, 14, 21, 22, 23, 24, 31, 32, 33, 34, 41, 42, 43, 44?

Pseudocode:
Z(0),…,Z(n-1) # die n Ziffern
V=(0,0,…,0) # m Komponenten
#Zaehler
nr=0

#Schleife
Wiederhole, bis

#Zahl speichern
Zahl(nr)=V
nr=nr+1

#zur nächsten Zahl
V(m)=V(m)+1
für a von m bis 1
wenn V(a)=n dann
V(a-1)=V(a-1)+1
V(a)=0
nächster

#Abbruchbedingung
V(1)>n

Damit hast Du alle Permutationen von Zahlen 0 bis n-1, die man nun über Z(0) bis Z(n-1)
in die gewünschten Ziffern verwandeln kann.

Ich hoffe, das trifft Dein Problem.

Bis dann, Jan