在n×n 格的棋盤上放置彼此不受攻擊的n 個皇后。按照西洋棋的規則,皇后可以攻擊與之處在同一行或同一列或同一斜線上的棋子。n後問題等價於在n×n格的棋盤上放置n個皇后,任何2 個皇后不放在同一行或同一列或同一斜線上。 設計乙個解n 後問題的佇列式分支限界法,計算在n× n個方格上放置彼此不受攻擊的n個皇后的乙個放置方案。
輸入資料只佔一行,有1 個正整數n,4≤n≤20。
將計算出的彼此不受攻擊的n個皇后的乙個放置方案輸出。第1行是n個皇后的放置方案。
5
1 3 5 2 4提示
**:
#include #include #include #include void nqueens(int *x, int n);
int place(int *x, int k);
void printsolution(int *x, int n);
int main()
int place(int *x, int k)
} else
k--;
} }
void printsolution(int *x, int n)
} printf("\n");
}
八皇后問題 2n皇后問題
問題描述 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處在同一行 同一列或同一斜線上。解決思路 解決八皇后問題不難,主要是應用到了遞迴回溯的方法,本質上也是一種列舉法。從棋盤的第一行開始嘗試擺放第乙個皇后,擺放成功之後,遞迴一層,再遵循規則在棋盤第二行來擺放第二個皇后。如...
八皇后問題
八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...
八皇后問題
include iostream.h int a 8 8 棋盤 int r 8 結果 int i,j int count 0 void init i j 0 int judge int x,int y for int mi x 1,mj y mi 1 mi for int ri x 1,rj y 1...