Menu
CoddyTech

N-Queens II

DifficileBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Una regina su una scacchiera attacca ogni casella della propria riga, della propria colonna e di entrambe le diagonali, a qualsiasi distanza. Ti viene dato un intero n. Restituisci il numero di modi per disporre n regine su una scacchiera n × n in modo che nessuna coppia di regine si attacchi a vicenda.

Due disposizioni sono diverse quando una casella contiene una regina in una e nell'altra è vuota. Quindi una scacchiera e la sua immagine speculare contano come due disposizioni, anche se sembrano uguali.

Funzione

totalNQueens(n: integer) → integer
ninteger
la dimensione della scacchiera e il numero di regine
Restituisceinteger
il numero di modi per posizionare 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 la colonna della regina di ogni riga dall'alto verso il basso, le due scacchiere sono 1, 3, 0, 2 e 2, 0, 3, 1. Ognuna è l'immagine speculare dell'altra e contano come due soluzioni. Ogni altra scelta mette due regine sulla stessa colonna o diagonale.

lock icon+10 test nascosti all’invio

challenge icon

Per approfondire

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

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

Caso 1

Caso 2

Input

n = 4

Atteso

2