Wahl der Datenstruktur III

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

TYPE Position = SHORTINT; (* [0..n-1] *)
TYPE Board =
   RECORD
      nofqueens: SHORTINT;
      size: SHORTINT;
      queens: ARRAY maxn OF RECORD row, col: Position END;
   END;

PROCEDURE Threatened(board: Board;
                     row, col: Position) : BOOLEAN;
   VAR
      index: SHORTINT;
      r, c: Position;
BEGIN
   index := 0;
   WHILE index < board.nofqueens DO
      r := board.queens[index].row;
      c := board.queens[index].col;
      IF (row = r) OR (col = c) OR
            (row + col = r + c) OR
            (ABS(row - col) = ABS(r - c)) THEN
         RETURN FALSE
      END;
      INC(index);
   END;
   RETURN TRUE
END Threatened;

*Wenn statt einem 2-dimensionalen Feld nur die Positionen der bislang gesetzten Damen vermerkt werden, vereinfacht sich die Überprüfung.
 
*Der Aufwand von Threatened reduziert sich jetzt auf eine Schleife mit k-1 Schritten für das Setzen der k-ten Dame.
 

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