第1次實驗 NPC問題 回溯演算法 聚類分析

2021-06-22 10:04:04 字數 1988 閱讀 4934

1.八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於2023年提出:在8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。 高斯認為有76種方案。2023年在柏林的象棋雜誌上不同的作者發表了40種不同的解,後來有人用圖論的方法解出92種結果。計算機發明後,有多種方法可以解決此問題。

下面我將程式設計解決這個問題。

我首先把此問題的求解延伸到n皇后問題,考慮到可能輸出的結果會很多,我設定如果結果數大於或等於n種則只輸出n種結果,如果結果數小於n種則輸出全部結果,結果輸出至檔案output.txt中,單個結果為n*n的二維矩陣,其中q代表皇后,x代表空。

下面是**:

queensquestion.h

#pragma once

#include class queensquestion

;

queensquestion.cpp

#include "queensquestion.h"

#include #include using namespace std;

queensquestion::queensquestion(const int numofqueen)

:num(numofqueen),queen('q'),empty('x')

}queensquestion::~queensquestion(void)

delete chessboard;

}int queensquestion::output()

程式執行結果:

output.txt內容如下:

q******x

***xq***

******xq

***xxqxx

xxq***xx

******qx

xq******

***q***x

xq******

***q***x

***xxqxx

******xq

xxq***xx

q******x

******qx

***xq***

xxq***xx

q******x

******qx

***xq***

******xq

xq******

***q***x

***xxqxx

***q***x

q******x

***xq***

******xq

xq******

******qx

xxq***xx

***xxqxx

***xq***

q******x

***q***x

***xxqxx

******xq

xq******

******qx

xxq***xx

***xxqxx

q******x

***xq***

xq******

******xq

xxq***xx

******qx

***q***x

******qx

q******x

xxq***xx

******xq

***xxqxx

***q***x

xq******

***xq***

******xq

xq******

***q***x

q******x

******qx

***xq***

xxq***xx

***xxqxx

第1次實驗 NPC問題 回溯演算法 聚類分析

實驗內容 1 八皇后及n皇后問題 八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年...

第1次實驗 NPC問題 回溯演算法 聚類分析

1 八皇后及n皇后問題 八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象...

第1次實驗 NPC問題 回溯演算法 聚類分析

1 八皇后及n皇后問題 八皇后問題,是乙個古老而著名的問題,是回溯演算法的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象...