Menu
CoddyTech

N-Queens II

KhóQuay luipython iconjava iconcpp iconc iconjs icon+10

Một quân hậu tấn công mọi ô trên cùng hàng, cùng cột và cả hai đường chéo của nó, dù ở xa đến đâu. Cho một số nguyên n, hãy trả về số cách đặt n quân hậu trên bàn cờ n × n sao cho không có hai quân hậu nào tấn công lẫn nhau.

Các bàn cờ khác nhau ở bất kỳ ô nào đều được tính riêng, kể cả các bàn cờ đối xứng gương.

Hàm

totalNQueens(n: integer) → integer
ninteger
kích thước bàn cờ và số lượng quân hậu
Trả vềinteger
số cách đặt các quân hậu sao cho không quân nào tấn công quân nào

Ràng buộc

  • 1 ≤ n ≤ 12
  • Đáp án với n = 12 là 14,200, nên giá trị này nằm trong phạm vi của một số nguyên (integer) 32 bit.

Ví dụ

Đầu vào
n = 4
Đầu ra
2
Giải thích
Ghi lại cột có quân hậu của mỗi hàng từ trên xuống dưới, ta có các bàn cờ 1, 3, 0, 2 và 2, 0, 3, 1: chúng là ảnh đối xứng của nhau, nhưng vẫn được tính là hai cách. Mọi lựa chọn khác đều đặt hai quân hậu cùng cột hoặc cùng đường chéo.
challenge icon

Câu hỏi mở rộng

Bạn có thể chỉ đếm những bàn cờ vẫn khác nhau sau khi xoay và lật bàn cờ không? Với n = 8, 92 bàn cờ được chia thành 12 nhóm như vậy.

Đặt lại code
def totalNQueens(n):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Đối số

n = 4

Đầu ra mong đợi

2