Menu
CoddyTech

N-Queens II

Ферзь на шахматной доске атакует все клетки в своей строке, в своём столбце и на обеих диагоналях, независимо от расстояния. Дан целый номер n. Верните количество способов разместить n ферзей на доске размером n × n так, чтобы ни один ферзь не атаковал другого.

Два способа считаются разными, если в каком-либо способе на некоторой клетке стоит ферзь, а в другом эта клетка пуста. Поэтому доска и её зеркальное отражение считаются двумя способами, даже если выглядят одинаково.

Функция

totalNQueens(n: integer) → integer
ninteger
размер доски и количество ферзей
Возвращаетinteger
количество способов расставить ферзей так, чтобы ни один не атаковал другого

Ограничения

  • 1 ≤ n ≤ 12
  • Ответ для n = 12 — 14,200, поэтому это значение помещается в 32-битное целое число.

Примеры

Ввод
n = 4
Вывод
2
Пояснение
Записывая столбец ферзя в каждой строке сверху вниз, получаем две доски: 1, 3, 0, 2 и 2, 0, 3, 1. Каждая из них является зеркальным отражением другой, и они считаются двумя способами. Любой другой вариант размещает двух ферзей в одном столбце или на одной диагонали.

lock icon+10 скрытых тестов при отправке

challenge icon

Дополнительный вопрос

Можешь посчитать только те доски, которые остаются различными после поворота и отражения доски? При n = 8 92 доски образуют 12 таких групп.

Сбросить код
def totalNQueens(n):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Ввод

n = 4

Ожидается

2