擴充套件的八皇后問題

2021-07-02 00:57:10 字數 473 閱讀 3542

問題是乙個古老而著名的問題,是

回溯演算法

的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於2023年提出:在8x8格的

西洋棋

上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 

高斯認為有76種方案。2023年在

柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。

計算機發明後,有多種計算機語言可以解決此問題。

以下**根據使用者輸入的棋盤格數,列印出所有的解法,輸入n=8時,即為8*8格的棋盤。核心**參考自劉汝佳的《演算法競賽入門經典》,完整**如下,只要儲存為.cpp檔案,編譯執行即可:

#include

#define maxn 20

//列印函式

void printf_count(int *a,int n)

{ for(int i=0;i

八皇后問題擴充套件版 c

任意大小棋盤,任意數量的皇后 include include using namespace std const int num 8 方形棋盤行數 const int qnum 8 加入皇后的個數 int a num 1 存放棋盤資訊的陣列,陣列號代表行號,對應陣列值代表列號 static int ...

八皇后問題的總結與擴充套件

八皇后問題是在乙個8 8的棋盤內,如何放置8個互不衝突的皇后。我們知道,皇后可以橫 直 斜不限距離移動。我們基本上用的是回溯解決此類問題,我這兩天看到了不少的八皇后問題解題辦法。在我看來,比較高明的解題辦法是這種 public class queen public void backtrack in...

演算法作業 八皇后問題擴充套件到N皇后

問題背景 在 8 8 格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,輸出所有擺法。環境 vs2017 include pch.h include include include using namespace std const int max si...