C 實現八皇后問題的方法

2022-10-04 04:12:09 字數 638 閱讀 6470

一般在八皇后問題中,我們要求解的是乙個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...