,描述见代码注释。
由于此题需要对nxn棋盘中的每个点进行判断,在符合情况的点再进行选择,穷举棋盘是不可避免,故此我们可以使用回溯的方法进行解决此问题
过程如下
比如在下面的4*4的格子里,如果我们在其中一个格子里输入了皇后,那么在这一行这一列和这左右两边的对角线上都不能有皇后。
所以有一种方式就是我们一个个去试
第一行
比如我们在第一行第一列输入了一个皇后
第二行
第二行我们就不能在第一列和第二列输入皇后了,因为有冲突了。但我们可以在第3列输入皇后
第三行
第三行我们发现在任何位置输入都会有冲突。这说明我们之前选择的是错误的,再回到上一步,我们发现第二步不光能选择第3列,而且还能选择第4列,既然选择第3列不合适,那我们就选择第4列吧
第二行(重新选择)
第二行我们选择第4列
第三行(重新选择)
第3行我们只有选择第2列不会有冲突
第四行
我们发现第4行又没有可选择的了。第一次重试失败
第二次重试
到这里我们只有重新回到第一步了,这说明我们之前第一行选择第一列是无解的,所以我们第一行不应该选择第一列,我们再来选择第二列来试试
第一行
这一行我们选择第2列
第二行
第二行我们前3个都不能选,只能选第4列
第三行
第三行我们只能选第1列
第四行
第四行我们只能选第3列
最后我们终于找到了一组解。除了这组解还有没有其他解呢,肯定还是有的,因为4皇后是有两组解的,这里我们就不在一个个试了。