Menu
CoddyTech

N-Queens II

DifícilBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Una reina en un tablero de ajedrez ataca todas las casillas de su fila, de su columna y de sus dos diagonales, sin importar lo lejos que estén. Se te da un entero n. Devuelve el número de formas de colocar n reinas en un tablero de n × n de modo que ninguna pareja de reinas se ataque.

Dos formas son diferentes cuando en una de ellas alguna casilla tiene una reina y en la otra está vacía. Así que un tablero y su imagen especular cuentan como dos formas, aunque parezcan iguales.

Función

totalNQueens(n: integer) → integer
ninteger
el tamaño del tablero y el número de reinas
Devuelveinteger
el número de maneras de colocar las reinas para que ninguna ataque a otra

Restricciones

  • 1 ≤ n ≤ 12
  • La respuesta para n = 12 es 14,200, así que cabe en un entero de 32 bits.

Ejemplos

Entrada
n = 4
Salida
2
Explicación
Escribiendo la columna de la reina de cada fila de arriba abajo, los dos tableros son 1, 3, 0, 2 y 2, 0, 3, 1. Cada uno es la imagen especular del otro y cuentan como dos formas. Cualquier otra elección coloca dos reinas en la misma columna o diagonal.

lock icon+10 pruebas ocultas al enviar

challenge icon

Para ir más allá

¿Puedes contar solo los tableros que siguen siendo diferentes después de rotar y reflejar el tablero? Para n = 8, los 92 tableros se dividen en 12 grupos de este tipo.

Restablecer código
def totalNQueens(n):
    # Escribe el código aquí
Casos de prueba

Caso 1

Caso 2

Entrada

n = 4

Esperado

2