在国际象棋中,皇后是整个棋盘上实力最强的一种棋子,可以直走、横走和斜着走(沿45°角移动),可以攻击行走路线上的任何棋子。
n皇后问题就源自国际象棋,它研究的是:如何将n个皇后摆放在n*n的棋盘中,使它们不能相互攻击。也就是说,棋盘上各个皇后无论直走、横走还是斜着走,都无法相互攻击。
举个例子,如下在4*4的棋盘中摆放了4个皇后,它们都用q来表示。
图1n皇后问题
如图1所示,无论直走、横走还是斜着走,各个皇后都无法相互攻击。
显然要想使各个皇后不相互攻击,应保证它们不位于同一行(或者同一列)。借助回溯算法,我们可以逐一测试出每一行皇后所在的位置,最终得出n皇后问题的百家乐凯发k8的解决方案。
n皇后问题的百家乐凯发k8的解决方案
如下为使用回溯算法解决n皇后问题的伪代码:
输入n //输入皇后的个数
q[n] -> 存储每行的皇后的位置
n_queens(k,n): //确定第k行皇后的位置
ifk>n: //递归的出口
printq //输出各个皇后的位置
else:
forj<-1ton: //从第k行第1列开始,判断各个位置是否可