八皇后問題(非遞迴版)

2021-08-29 17:28:51 字數 788 閱讀 7602

#include

<

iostream

>

#include

<

stack

>

using

namespace

std;

const

intmaxsize=8

;//棋盤大小

intchess[maxsize][maxsize]=;

//棋盤

/*定義棧結點,表示乙個皇后的位置

*/struct

node;/*

進行皇后問題處理

*返回找到的答案個數

*/int

solve()

,md[2*

maxsize-1

]=,sd[2*

maxsize-1

]=;int

str,stc,i,j;

//解決方案個數

intscount=0

;nodetopnode;

//初始化棧

for(i=0

;i<

maxsize;i++)

//以行為單位開始回溯

while(!

stack.empty())

else}}

cout

<<

endl;

scount++;

//解決方案數增

}else}}

}else

}return

scount;

}int

main()

八皇后問題(遞迴版)

author phinecos since 2008 10 31 class eightqueen 第col列不能有多於1個皇后 for i 0 i maxsize i 對角線不能有多於1個皇后 反對角線 for i row 1 j col 1 i 0 j maxsize i,j for i row...

回溯 八皇后問題(遞迴和非遞迴)

8皇后問題 如何在 8 x 8 的西洋棋棋盤上安排 8個皇后,使得沒有兩個皇后能互相攻擊?如果兩個皇后處在同一行 同一列或同一條對角線上,則她們能互相攻擊。解向量為長度為8 的陣列,記為 solution 因為共有 8個皇后,而棋盤剛好為 8 8,所以每一行肯定會有乙個皇后,那麼我們約定 solut...

八皇后問題遞迴和非遞迴演算法

大名鼎鼎的八皇后問題。相信大家都耳熟能詳。八皇后的是乙個典型的用回溯法求解的問題。在回溯法中的乙個關鍵是要動態儲存求解空間對應的程式所處的狀態,特別是能夠進行狀態 回滾 當一發現個部分解再往下去不能成為合法的解時,要回溯到這個部分解之前所處的狀態。程式狀態的 前進 和 回滾 用ban和unban函式...