一般在八皇后問題中,我們要求解的是乙個8*8的西洋棋棋盤中,放下8個皇后且互相不能攻擊的排列總數。皇后的攻擊範圍為整行,整列,以及其斜對角線。
由於皇后的攻擊範圍特性,注定我們每行只能放下乙個皇后,於是我們要做的只是逐行放下皇后。八皇后問題是回溯法的典型問題。這裡我們用的方法很簡單:
從第一行開始逐個檢索安全位置擺放皇后,一旦有安全位置則考慮下一行的安全位置。如果發現某行沒有安全位置,則返回上一行繼續檢索安全位置;如果發現在最後一行找到了安全位置則輸出整個棋盤。
原理很簡單,整個程式中表現了這個思想的函式是void solve()
下面是實現的**:
//八皇后問題的實現
#include
#include
using namespace std;
//queenchess類宣告
class queenchess
;//建構函式,將棋盤初始化
queenchess::queenchess()
//求解八皇后問題,並給出放置成功的棋盤總個數
void queenchess::solve()
//main函式進行測試
int main()
本文標題: c++實現八皇后問題的方法
本文位址:
八皇后問題 c 實現
using system using system.collections.generic using system.text namespace eightqueen static int n 8 static char board new char n,n private static int ...
八皇后問題的c 實現
八皇后問題的實現 include include using namespace std queenchess類宣告 class queenchess 建構函式,將棋盤初始化 queenchess queenchess 求解八皇后問題,並給出放置成功的棋盤總個數 void queenchess so...
八皇后問題遞迴實現(C )
八皇后的遞迴實現,執行程式後,平台只能顯示少部分解,在此,為了方便解集合的檢視,將解集儲存在了 f result.txt 檔案中。實現 如下 include include include using namespace std define n 8 define solu size 100 str...