八皇后的演算法實現(回溯法)

2021-06-06 14:07:35 字數 1477 閱讀 9115

前言:

(1)問題重述:

在8x8格的

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

(2)**實現:(看不懂在說,應該看得懂啊!都有注釋的說)

/*******************

首先是給出的main程式的入口***********************/

// 八皇后.cpp : 定義控制台應用程式的入口點。

#include"stdafx.h"     

//在建專案的時候讓編譯器自動預編譯的

#include"eightqueens.h"

#include

//呼叫執行空間

using namespace std;  

//避免衝突

int _tmain(int argc,_tchar* argv)

/********************eightqueen.h

中對類的定義*********************/

#pragma

once

//避免重複的引用

class

eightqueens      //

對類的定義 ;

/************eightqueen.cpp

對eightquenn,h中的定義實現***************/

#include

"stdafx.h"

#include

"eightqueens.h"

#define

queen_count (8)

eightqueens::eightqueens(void)

:m_pos(null)

,m_count(0)

eightqueens::~eightqueens(void)

}if (m_pos!= null)

} void

eightqueens::init()//

分配標誌位的記憶體空間

for ( int i = 0; i != 2*queen_count+1; i++)

} void

eightqueens::searchsolution(unsigned

int count)

else

//若不是最後乙個皇后,向下判斷剩下的

count-1

個queens.

//回溯到上乙個

queens,i++

表示嘗試下乙個安全位置,解

next

解。m_sign[0][i] = m_sign[1][i+ count] = m_sign[2][count - i + queen_count] = 1; }

} }

void

eightqueens::output()

cout< }

回溯法 八皇后

題目大意 八皇后問題是乙個以西洋棋為背景的問題 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。八皇后問題可以推廣為更一般的n皇后擺放問題 這時棋盤的大小變為n1 n1,而皇后個數也變成n2。而且...

八皇后問題(經典演算法 回溯法)

問題描述 八皇后問題 eight queens problem 是十九世紀著名的數學家高斯於1850年提出的。問題是 在8 8的棋盤上擺放八個皇后,使其不能互相攻擊。即任意兩個皇后都不能處於同一行 同一列或同一斜線上。可以把八皇后問題擴充套件到n皇后問題,即在n n的棋盤上擺放n個皇后,使任意兩個皇...

演算法 回溯法解決八皇后問題

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