Menu
CoddyTech

N-Queens II

SchwerBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Eine Dame auf einem Schachbrett greift jedes Feld in ihrer Reihe, in ihrer Spalte und entlang beider Diagonalen an, egal wie weit entfernt es ist. Du erhältst eine ganze Zahl n. Gib die Anzahl der Möglichkeiten zurück, n Damen auf einem n × n-Brett so zu platzieren, dass sich keine zwei Damen gegenseitig angreifen.

Zwei Möglichkeiten sind unterschiedlich, wenn auf einem Feld in der einen eine Dame steht und es in der anderen leer ist. Daher zählen ein Brett und sein Spiegelbild als zwei Möglichkeiten, auch wenn sie gleich aussehen.

Funktion

totalNQueens(n: integer) → integer
ninteger
die Größe des Bretts und die Anzahl der Damen
Gibt zurückinteger
die Anzahl der Möglichkeiten, die Damen so zu platzieren, dass keine eine andere angreift

Einschränkungen

  • 1 ≤ n ≤ 12
  • Die Antwort für n = 12 ist 14,200, also passt sie in eine 32-Bit-Ganzzahl.

Beispiele

Eingabe
n = 4
Ausgabe
2
Erklärung
Schreibt man die Spalte der Dame jeder Zeile von oben nach unten auf, lauten die beiden Bretter 1, 3, 0, 2 und 2, 0, 3, 1. Jedes ist das Spiegelbild des anderen, und sie zählen als zwei Lösungen. Jede andere Wahl platziert zwei Damen in derselben Spalte oder auf derselben Diagonale.

lock icon+10 versteckte Tests beim Einreichen

challenge icon

Weiterführende Frage

Kannst du nur die Bretter zählen, die nach dem Drehen und Spiegeln des Bretts unterschiedlich bleiben? Für n = 8 fallen die 92 Bretter in 12 solcher Gruppen.

Code zurücksetzen
def totalNQueens(n):
    # Schreibe hier den Code
Testfälle

Fall 1

Fall 2

Eingabe

n = 4

Erwartet

2