Menu
CoddyTech

N-Queens II

SchwerBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Eine Dame greift jedes Feld in ihrer Zeile, ihrer Spalte und auf beiden Diagonalen an, egal wie weit entfernt. Gib bei einer ganzen Zahl n die Anzahl der Möglichkeiten zurück, n Damen auf einem n × n-Brett so zu platzieren, dass sich keine zwei Damen gegenseitig angreifen.

Bretter, die sich in irgendeinem Feld unterscheiden, werden getrennt gezählt, einschließlich Spiegelbildern.

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 Dame 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, erhält man die Bretter 1, 3, 0, 2 und 2, 0, 3, 1: Spiegelbilder, die als zwei gezählt werden. Bei jeder anderen Wahl stehen zwei Damen in derselben Spalte oder auf derselben Diagonale.
challenge icon

Weiterführende Frage

Kannst du nur die Bretter zählen, die nach Drehungen und Spiegelungen des Bretts noch verschieden sind? Für n = 8 lassen sich die 92 Bretter in 12 solcher Gruppen einteilen.

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

Test #1

Test #2

Argument

n = 4

Erwartete Ausgabe

2