Permutationen III

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

Permutations.m2
PROCEDURE GenPermutations(k, n: CARDINAL; perm: Permutation);
   (* perm[1..k] ist festgelegt,
      generiere alle Varianten fuer perm[k+1..n]
   *)
   VAR
      nperm: Permutation;
      i, j: CARDINAL;
BEGIN
   IF k = n THEN
      GenPermutation(perm, n);
   ELSE
      FOR i := 1 TO k+1 DO
         nperm := perm;
         FOR j := 1 TO k DO
            IF nperm[j] >= i THEN
               INC(nperm[j]);
            END;
         END;
         nperm[k+1] := i;
         GenPermutations(k + 1, n, nperm);
      END;
   END;
END GenPermutations;
Nachteil dieser Lösung:

*Die Permutationen werden 2x kopiert: Einmal bei der Parameterübergabe und einmal bei der Bestimmung jeder neuen Permutation.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999