利用深度搜尋法解決八皇后問題

2021-07-05 06:29:56 字數 623 閱讀 8625

八皇后問題每行必須有乙個皇后,所以,對棋盤深蒐時,第乙個皇后的位置不妨設為第一行,這樣只對第一行進行搜尋,同理,第二個皇后不妨設為第二行,以此類推。

下面附我的**:

#includeusing namespace std;

struct node1

;//棋盤模擬,不可以放皇后的地方值為0,可以為1;

struct node2

;//記錄放皇后的位置座標

//node1 a[9];

node1 visited[9];

node2 zb[8];

int num;//記錄有多少中方法

void print()//輸出用的函式,座標從0開始,到7/。

cout<<'\n';

}int x1,x2,x3,x4,y1,y2,y3,y4;

void vis(int x,int y,int step)//模擬記錄在第step步時,把皇后放在x,y位置後,哪些地方就不能放皇后了。

while(x1<8&&y1<8)

while(x4<8&&y4>=0)

}void dfs(int step)}}

int main()

深度優先搜尋解決八皇后問題

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

回溯法解決八皇后問題

在西洋棋棋盤上 8 8 放置八個皇后,使得任意兩個皇后之間不能在同一行,同一列,也不能位於同於對角線上。問共有多少種不同的方法,並且指出各種不同的放法。使用回溯法依次假設皇后的位置,當第乙個皇后確定後,尋找下一行的皇后位置,當滿足左上 右上和正上方向無皇后,即矩陣中對應位置都為0,則可以確定皇后位置...

C 列舉法解決八皇后問題

用列舉法解8皇后問題 在西洋棋棋盤上放8個皇后,西洋棋棋盤共有8行8列,皇后可以吃掉與之同行同列以及同一對角線上的其他皇后。為了讓她們共存,請編寫演算法找出各種放置方法。題目要求用列舉法解決該問題,但是若完全用迴圈實現起來過於繁瑣,所以這裡使用遞迴呼叫求解,用for迴圈的思路與之相同。可以用一維陣列...