Menu
CoddyTech

N-Queens II

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

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

1つでもマスが異なる盤面は、鏡像も含め、それぞれ別の配置として数えます。

関数

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です。これは鏡像ですが、2つとして数えます。それ以外の配置では、同じ列または対角線上に2つのクイーンが置かれます。
challenge icon

発展問題

盤面を回転または反転しても同一にならない盤面だけを数えられますか? n = 8 の場合、92 個の盤面はそのような 12 個のグループに分類されます。

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

テスト #1

テスト #2

引数

n = 4

期待される出力

2