引入N叉树的数据结构,构建皇后问题的解空间树。排列长度为树的深度,据此判定递归的出口。初始状态将一维数组q置空,以行先序从第0行开始递归求解。遍历行每一列,若q中已有(即第列已经放置了皇后),则发生剪枝,继续遍历其他列;若q中没有,则,递归式进入行的遍历,直到数组q中已经赋满个列号,则进入递归出口进行判定局面的合理性(即每个行/列/斜线最多仅有1个皇后)。若局面合理,将该合理局面保存在二维数组result中,继续回溯探索其他合理局面;若局面不合理,同样回溯探索其他合理局面。以此类推,直到遍历完解空间中所有情况,result中所保存的就是所有合理局面,result的长度就是皇后问题满足条件的所有局面总数。
其中判断局面合理性的方法具体如下:
(横行)
(纵行)