八皇后問題每行必須有乙個皇后,所以,對棋盤深蒐時,第乙個皇后的位置不妨設為第一行,這樣只對第一行進行搜尋,同理,第二個皇后不妨設為第二行,以此類推。
下面附我的**:
#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迴圈的思路與之相同。可以用一維陣列...