#include
#include
using
namespace std;
static
char queen[8]
[8];
//建立乙個棋盤
static
int a[8]
;static
int b[15]
;static
int c[15]
;static
int iqueennum =0;
//記錄總的棋盤狀態數
voidqu(
int i)
;//引數i代表行
voidqu(
int i)
cout<<
"\n\n";}
//如果前次的皇后放置導致後面的放置無論如何都不能滿足要求,則回溯,重置
queen[i]
[icolumn]
='*'
; a[icolumn]=0
; b[i - icolumn +7]
=0; c[i + icolumn]=0
;}}}
intmain()
//主、從對角線標記初始化,表示沒有衝突
for(iline =
0;iline <
15;iline++
) b[iline]
= c[iline]=0
;qu(0
);system
("pause");
return0;
}
回溯法求解8皇后問題
問題描述 在乙個8 8西洋棋盤上,有8個皇后,每個皇后佔一格 要求皇后間不會出現相互攻擊的現象,即不能有兩個皇后處在同一行 同一列或同一對角線上 問共有多少種不同的擺放方法?本解法採用回溯遞迴法,容易理解,首先在棋盤上擺第乙個皇后,然後擺第二個,每擺乙個皇后則判斷位置是否合法。如果合法,則擺下乙個皇...
回溯法求解N皇后問題。
n皇后問題就是 不存在兩個皇后同行或同列,或在同一斜線上。如下圖所示。黑色塊表示其中乙個皇后放在了第二行,第三列。這時,只有綠色圈圈才能放其他的皇后。回溯法的基本思想 確定了解空間的組織結構後,回溯法就從開始結點 根結點 出發,以深度優先的方式搜尋整個解空間。這個開始結點就成為乙個活結點,同時也成為...
回溯法求解n皇后問題
皇后問題 由n n個方塊排成n行n列的正方形稱為 n元棋盤 如果兩個皇后位於棋盤上的同一行或同一列或同一對角線上,則稱她們為互相攻擊,現要求找使n元棋盤上的n個皇后互不攻擊的所有布局。假設棋盤上每一行放置乙個皇后,分別用自然數0,1,2,n 1。首先定義乙個長度為n的一維陣列q,其中每乙個元素去q ...