描述
对于n皇后,答案是多少种
解决
利用二进制来标记
class Solution {
public:
int sum{0};
int most_num;
int totalNQueens(int n) {
most_num = (1 << n) - 1;
rec(0, 0, 0);
return sum;
}
void rec(int up_r, int l, int r)
{
if (up_r == most_num)
{
++sum;
return ;
}
int tmp = most_num & (~(up_r | l | r));
while (tmp)
{
int t = tmp & (-tmp);
tmp -= t;
rec(up_r + t, (l + t) << 1, (r + t) >> 1);
}
}
};