#include
using namespace std;
#define n 8
//n代表皇后數
void queen()
{
int j;
int count=0; //計算總共的解的數量
int column[n+1]; //column[m]=n 表示第m列,第n行放置了皇后,這裡下表並從0開始
int row[n+1]; //row[m]=1表示第m行沒有皇后,=0表示有皇后
int b[2*n+1]; //b[m]=1表示第m條主對角線沒有皇后,
int c[2*n+1]; //c[m]=1表示第m條次對角線沒有皇后,=0表示有皇后
int numqueen=1; //計數已經放置的皇后數目,當numqueen=n時候則表示已經完成探測
int good=1; //good=1表示沒有發生衝突,good=0表示發生衝突
//初始化這些標記
for(j=0;j
例項1 八皇后問題
八皇后問題,是乙個古老而著名的問題,是 回溯演算法 的典型案例。該問題是國際西洋棋棋手馬克斯 貝瑟爾於1848年提出 在8 8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有76種方案。1854年在柏林的象棋雜誌上不同的作者發...
回溯法1 八皇后問題
問題 8x8格的西洋棋上 擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。思路 回溯法是一種試錯方法 1.先選乙個位置試著放置一下,並做 記錄 2.在每次子問題中進行判定時需要過去的 記錄 作為是否可以繼續嘗試的依據 3.最後很關鍵,需要在每次判斷...
八皇后問題
八皇后問題 ackarlix 八皇后問題是乙個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯 1850 年提出 在 8x8格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行 同一列或同一斜線上,問有多少種擺法。高斯認為有 76種方案。1854 年在...