1.问题分析
在n X n的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之同一行,同一列,同一写线上的棋子。现在n X n的棋盘上放置n个皇后,使彼此不受攻击。
如图所示,我们要在i行j列放置一个皇后,那么第i行的其他位置(同行),j列其他位置(同列),同一写线上的其他为止吗,都不能放置皇后。
条件是这么要求的,但是我们也不能杂乱无章的尝试每个为止,我们可以以行为主导:
- 在第一行第一列放置一个皇后。
- 在第二行放置第二个皇后,第二个皇后的位置不能跟第一个皇后同一行同一列同一条写线上·,这里不用再判断同行,因为这里本来就不同行。
- 第三行……
- 第四行……
- 以此类推。
2.算法设计
(1)定义问题i解空间。
(2)解空间的组织结构:是一颗m叉树。
(3)搜索空间
约束条件:在第t行放置第t个皇后时,第t个皇后的位置不能和前t-1个皇后同列,同斜线。第i个皇