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: зеркальные отражения друг друга, считающиеся двумя решениями. При любом другом выборе два ферзя окажутся в одном столбце или на одной диагонали.
challenge icon

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

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

Сбросить код
def totalNQueens(n):
    # Напишите код здесь

Тест #1

Тест #2

Аргумент

n = 4

Ожидаемый вывод

2