递归与回溯 八皇后问题分析 【背景】八皇后问题是一个以国际象棋为背景的问题:如何能够在 8×8 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。 八皇后的两组解 设八个皇后为xi,分别在第i行(i=1,2,3,4……,8);问题的解状态:可以用(1,x1),(2,x2),……,(8,x8)表示8个皇后的位置;由于行号固定,可简单记为:(x1,x2,x3,x4,x5,x6,x7,x8);问题的解空间:(x1,x2,x3,x4,x5,x6,x7,x8),1≤xi≤8(i=1,2,3,4……,8),共88个状态;约束条件:八个(1,x1),(2,x2) ,(3,x3),(4,x4) ,(5,x5), (6,x6) , (7,x7), (8,x8)不在同一行、同一列和同一对角线上。原问题即:在解空间中寻找符合约束条件的解状态。 【问题分析】 1.按什么顺序去查找所有的解 a.盲目的枚举算法 void main() { int x[100]; for (x[1]=1;x[1]=10;x[1]++) for (x[2]=1;x[2]=10;x[2]++) for (x[3]=1
原创力文档

文档评论(0)