#LAISIR59. N 皇后問題(N-Queens Problem)

N 皇后問題(N-Queens Problem)

🏰 N 皇后問題(N-Queens Problem)

📖 題目描述

在一個 N × N 的國際象棋棋盤上,放置 N 個皇后,使得任意兩個皇后都不能互相攻擊。 也就是說,任何兩個皇后都 不能在同一行、同一列、或同一條對角線上

請你輸出所有可能的擺放方案。 每種方案以 N 行表示,每行一個整數,代表該行皇后所在的列號(從 1 開始編號)。 若有多種方案,請按 字典序 從小到大輸出。


📥 輸入格式

輸入一行,包含一個整數:

N

📤 輸出格式

輸出所有方案,每個方案之間空一行。 若無任何方案,輸出一行:

No Solution

📊 數據範圍

1 ≤ N ≤ 12

💡 輸入樣例 1

4

💬 輸出樣例 1

2 4 1 3

3 1 4 2

🧠 樣例說明

共有兩種方法能在 4 × 4 棋盤上放置 4 個皇后,且彼此不攻擊。


🧩 提示與思路

  • 可使用 回溯法(Backtracking)DFS 深度優先搜索

  • 每次在當前行放置一個皇后,然後檢查與之前行的皇后是否衝突。

  • 檢查條件:

    • 是否在同一列;
    • 是否在同一主對角線;
    • 是否在同一副對角線。
  • 若可行,繼續遞迴到下一行;否則回溯。