前置知识:递归相关:讲解 038;位运算相关 : 讲解 003030031032033

解决 N 皇后问题的时间复杂度是 ,好的方法可以大量剪枝,大量优化常数时间

用数组表示路径的方法

经典、常数时间慢,不推荐

思路

记录之前每一行的皇后放在了什么列

来到第 i 行的时候,可以根据 0~i-1 行皇后的位置,判断能放哪些列

把能放的列都尝试一遍,每次尝试修改路径数组表示当前的决策,后续返回的答案都累加返回

用位运算的方法

巧妙、常数时间快,推荐

思路

colleftright 三个 int 的位信息,可以表示之前行的皇后 ban 掉的位置

把能放的列都尝试一遍,每次尝试修改 3 个数字表示当前的决策,后续返回的答案都累加返回

N 皇后