Menu
CoddyTech

N-Queens II

DifícilBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Una reina ataca todas las casillas de su fila, su columna y ambas diagonales, por lejos que estén. Dado 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 entre sí.

Los tableros que difieran en cualquier casilla cuentan por separado, incluidas las imágenes especulares.

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 de modo 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 tableros son 1, 3, 0, 2 y 2, 0, 3, 1: imágenes especulares, contadas como dos. Cualquier otra elección coloca dos reinas en la misma columna o diagonal.
challenge icon

Para ir más allá

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

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

Prueba #1

Prueba #2

Argumento

n = 4

Salida Esperada

2