問題是乙個古老而著名的問題,是
回溯演算法
的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於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...