Permutationen IV

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

Permutations2.om
PROCEDURE GenPermutations(k, n: INTEGER; perm: Permutation);
   (* perm[n-k..n-1] is fixed except that
      those of perm[n-k+1..n-1] are to be incremented by 1
      which are greater or equal to perm[n-k];
      generate all variants for perm[0..n-k-1]
   *)
   VAR
      inserted: INTEGER;
      i: INTEGER;
BEGIN
   IF k > 1 THEN
      inserted := perm[n-k];
      i := n-k+1;
      WHILE i < n DO
         IF perm[i] >= inserted THEN
            INC(perm[i]);
         END;
         INC(i);
      END;
   END;
   IF k = n THEN
      GenPermutation(perm, n);
   ELSE
      i := 1;
      WHILE i <= k+1 DO
         perm[n-k-1] := i;
         GenPermutations(k + 1, n, perm);
         INC(i);
      END;
   END;
END GenPermutations;

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