n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。
上图为 8 皇后问题的一种解法。
给定一个整数 n,返回所有不同的 n 皇后问题的解决方案。
每一种解法包含一个明确的 n 皇后问题的棋子放置方案,该方案中 'Q' 和 '.' 分别代表了皇后和空位。
解释: 4 皇后问题存在两个不同的解法。
皇后,是国际象棋中的棋子,意味着国王的妻子。皇后只做一件事,那就是“吃子”。当她遇见可以吃的棋子时,就迅速冲上去吃掉棋子。当然,她横、竖、斜都可走一或七步,可进可退。(引用自 百度百科 – 皇后 )
n皇后是典型的回溯法问题。通过回溯法找到求解问题的所有子节点(解空间),若当前节点不符合条件,则回退到上一个节点。
注意这里ans_one使用的必须为引用类型,因为是对同一个地址操作,不需要复制值再去操作,后者会很浪费时间。
若ans_one不为引用类型,执行时间为: