一、问题描述
一个n*n的棋盘,要在上面放n个皇后。规则:两个皇后之间如果是同列、同行、同对角线它们会互相攻击。也就是说:棋盘上的任意两个皇后皇后
不能为同列、同行、同对角线。
二、问题分析
回溯法是一种通用的搜索算法,几乎可以用于求解任何可计算的问题。算法的执行过程就像是在迷宫中搜索一条通往出口的路线,总是沿着某一方向向前试探,若能走通,则继续向前进;如果走不通,则要做上标记,换一个方向再继续试探,直到得出问题的解,或者所有的可能都试探过为止。
首先需要对棋盘进行描述。直观地,棋盘可以用二维数组表示,有皇后的棋格对应数组元素值为1,无皇后的棋格对应数组元素值为0。但这种存储结构并不是最简单有效的选择。
下图中左边部分给棋盘的行、列编了号,提供的摆放方法,就是问题的一个解。右边的部分,将各行上皇后所在的列数记录下来,用这8个数字(4, 6, 8, 2, 7, 1, 3, 5),也构成了对问题解的一种描述。
下图中左边部分给棋盘的行、列编了号,提供的摆放方法,就是问题的一个解。右边的部分,将各行上皇后所在的列数记录下来,用这8个数字(4, 6, 8, 2, 7, 1, 3, 5),也构成了对问题解的一种描述。