Menu
CoddyTech

N-Queens II

SulitBacktrackingpython iconjava iconcpp iconc iconjs icon+10

Ratu menyerang setiap petak pada barisnya, kolomnya, dan kedua diagonalnya, sejauh apa pun jaraknya. Diberikan bilangan bulat n, kembalikan jumlah cara untuk menempatkan n ratu pada papan n × n sehingga tidak ada dua ratu yang saling menyerang.

Papan yang berbeda pada petak mana pun dihitung secara terpisah, termasuk bayangan cerminnya.

Fungsi

totalNQueens(n: integer) → integer
ninteger
ukuran papan dan jumlah ratu
Mengembalikaninteger
jumlah cara menempatkan ratu agar tidak ada yang saling menyerang

Batasan

  • 1 ≤ n ≤ 12
  • Jawaban untuk n = 12 adalah 14,200, jadi nilainya muat dalam integer 32-bit.

Contoh

Input
n = 4
Output
2
Penjelasan
Jika kita menuliskan kolom ratu di setiap baris dari atas ke bawah, papan-papannya adalah 1, 3, 0, 2 dan 2, 0, 3, 1: bayangan cermin, dihitung sebagai dua. Pilihan lainnya menempatkan dua ratu pada kolom atau diagonal yang sama.
challenge icon

Pertanyaan lanjutan

Bisakah kamu menghitung hanya papan yang tetap berbeda setelah papan diputar dan dicerminkan? Untuk n = 8, 92 papan terbagi menjadi 12 kelompok seperti itu.

Reset kode
def totalNQueens(n):
    # Tulis kodemu di sini

Tes #1

Tes #2

Argumen

n = 4

Output yang diharapkan

2