n-Damen-Idee

Beginner Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

n-Damen: platziere n Damen so, dass keine zwei sich schlagen (gleiche Zeile, Spalte, Diagonale). Backtracking setzt zeilenweise und prüft Konflikte.

Die Zahl der Lösungen wächst schnell; Pruning ist essenziell.

Diagram

Vollständige Platzierung: N-Queens [1].

Wo gebraucht

Kanonisches Constraint-Beispiel. Übertragbar auf Stundenpläne, Platzierung ohne Konflikte, Resource-Assignment mit harten Regeln.

Vertiefung

Beim n-Damen-Problem genügt es, zeilenweise genau eine Dame zu setzen. Der Zustand kann dadurch als Folge gewählter Spalten beschrieben werden. Besetzte Spalten und beide Schrägrichtungen liefern lokale Konflikttests, ohne jedes Mal alle bereits gesetzten Damen paarweise zu vergleichen.

Zwei Felder liegen auf derselben Schrägen, wenn Zeilen- und Spaltendifferenz betragsgleich sind. Praktisch lassen sich die Schrägen über die Kennzahlen Zeile minus Spalte und Zeile plus Spalte verwalten. Nach jeder Platzierung werden drei Mengen ergänzt und nach dem Rekursionsaufruf wieder bereinigt.

Schwierigkeitsstufen

  1. Konflikte einer neuen Dame auf einem kleinen Brett erkennen.
  2. Spalten und beide Diagonalrichtungen als Mengen modellieren.
  3. Symmetrien nutzen, ohne Lösungen falsch zu zählen.

Fallstricke

Typische Fehler sind vertauschte Diagonalformeln und unvollständiges Entfernen beim Zurückgehen. Wer zusätzlich jede Zeile als frei oder belegt speichert, dupliziert Information und vergrössert die Fehlerfläche unnötig.


Sources

University approvals: 0
Tasks
Question 1

Mit welchem Ausdruck erkennt man einen Diagonalkonflikt?

Question 2

Damen stehen bei (0, 1) und (1, 3). Welche Position in Zeile 2 ist konfliktfrei zu Spalte und Schrägen?

Question 3

Implementiere attacks für zwei Damen. Sie greifen sich an, wenn sie in derselben Spalte oder auf derselben Diagonale stehen.

Hint

Math.abs(int) liefert den Betrag einer Differenz. Boolesche Teilbedingungen können mit || kombiniert werden.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Beginner
  • Completed: 0 users
Creator
Best
Best
BestBuddy