Menu
CoddyTech

N-Queens II

むずかしいバックトラッキングpython iconjava iconcpp iconc iconjs icon+10

チェス盤上のクイーンは、どれだけ離れていても、同じ行、同じ列、および両方の対角線上にあるすべてのマスを攻撃します。整数 n が与えられます。互いに攻撃し合わないように、n × n の盤上に n 個のクイーンを置く方法の数を返してください。

一方ではあるマスにクイーンがあり、もう一方ではそのマスが空いている場合、2つの方法は異なります。そのため、盤とその鏡像は見た目が同じでも、別々の方法として数えます。

関数

totalNQueens(n: integer) → integer
ninteger
盤面の大きさとクイーンの数
戻り値integer
互いに攻撃し合わないようにクイーンを配置する方法の数

制約

  • 1 ≤ n ≤ 12
  • n = 12 の答えは14,200なので、32ビット整数に収まります。

例

入力
n = 4
出力
2
説明
各行のクイーンの列を上から下へ書くと、2つの盤面は1, 3, 0, 2と2, 0, 3, 1です。それぞれはもう一方の鏡像であり、2通りとして数えます。それ以外の選び方では、2つのクイーンが同じ列または対角線上に配置されます。

lock icon提出時に隠しテスト+10件

challenge icon

発展問題

盤面を回転・反転した後も異なる盤面だけを数えられますか? n = 8 の場合、92 個の盤面はこのような 12 個のグループに分かれます。

コードをリセット
def totalNQueens(n):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

入力

n = 4

期待値

2