解决 N 皇后问题的时间复杂度是 ,好的方法可以大量剪枝,大量优化常数时间
用数组表示路径的方法
经典、常数时间慢,不推荐
思路
记录之前每一行的皇后放在了什么列
来到第 i
行的时候,可以根据 0~i-1
行皇后的位置,判断能放哪些列
把能放的列都尝试一遍,每次尝试修改路径数组表示当前的决策,后续返回的答案都累加返回
用位运算的方法
巧妙、常数时间快,推荐
思路
col
、left
、right
三个 int
的位信息,可以表示之前行的皇后 ban 掉的位置
把能放的列都尝试一遍,每次尝试修改 3 个数字表示当前的决策,后续返回的答案都累加返回