Menu
CoddyTech

N-Queens II

DifficileBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Una regina attacca ogni casella della sua riga, della sua colonna e di entrambe le diagonali, per quanto lontane. Dato un numero intero n, restituisci il numero di modi per posizionare n regine su una scacchiera di n × n in modo che nessuna coppia di regine si attacchi a vicenda.

Le scacchiere che differiscono anche solo per una casella si contano separatamente, comprese le immagini speculari.

Funzione

totalNQueens(n: integer) → integer
ninteger
la dimensione della scacchiera e il numero di regine
Restituisceinteger
il numero di modi per disporre le regine in modo che nessuna ne attacchi un'altra

Vincoli

  • 1 ≤ n ≤ 12
  • La risposta per n = 12 è 14.200, quindi rientra in un intero a 32 bit.

Esempi

Input
n = 4
Output
2
Spiegazione
Scrivendo dall’alto verso il basso la colonna della regina in ogni riga, le scacchiere sono 1, 3, 0, 2 e 2, 0, 3, 1: immagini speculari, contate come due. Ogni altra scelta colloca due regine sulla stessa colonna o diagonale.
challenge icon

Per approfondire

Riesci a contare solo le scacchiere che restano diverse dopo aver ruotato e specchiato la scacchiera? Per n = 8, le 92 scacchiere si suddividono in 12 gruppi di questo tipo.

Ripristina il codice
def totalNQueens(n):
    # Scrivi il codice qui

Test #1

Test #2

Argomento

n = 4

Output atteso

2