Menu
CoddyTech

N-Queens II

DifficileRetour sur tracepython iconjava iconcpp iconc iconjs icon+10

Une reine sur un échiquier attaque toutes les cases de sa rangée, de sa colonne et de ses deux diagonales, quelle que soit leur distance. On vous donne un entier n. Renvoyez le nombre de façons de placer n reines sur un plateau de n × n de sorte qu’aucune paire de reines ne s’attaque.

Deux façons sont différentes si une case contient une reine dans l’une et est vide dans l’autre. Ainsi, un plateau et son image miroir comptent comme deux façons, même s’ils se ressemblent.

Fonction

totalNQueens(n: integer) → integer
ninteger
la taille de l’échiquier et le nombre de reines
Renvoieinteger
le nombre de façons de placer les reines de sorte qu’aucune n’attaque une autre

Contraintes

  • 1 ≤ n ≤ 12
  • La réponse pour n = 12 est 14,200, donc elle tient dans un entier de 32 bits.

Exemples

Entrée
n = 4
Sortie
2
Explication
En notant la colonne de la reine de chaque rangée de haut en bas, les deux plateaux sont 1, 3, 0, 2 et 2, 0, 3, 1. Chacun est l’image miroir de l’autre, et ils comptent comme deux solutions. Tout autre choix place deux reines dans la même colonne ou sur la même diagonale.

lock icon+10 tests cachés à la soumission

challenge icon

Pour aller plus loin

Peux-tu compter uniquement les plateaux qui restent différents après rotation et réflexion du plateau ? Pour n = 8, les 92 plateaux se répartissent en 12 groupes de ce type.

Réinitialiser le code
def totalNQueens(n):
    # Écrivez le code ici
Cas de test

Cas 1

Cas 2

Entrée

n = 4

Attendu

2