您的位置:首页 > 产品设计 > UI/UE

[LeetCode] N-Queens II

2015-08-22 12:27 387 查看


N-Queens II

 

Follow up for N-Queens problem.

Now, instead outputting board configurations, return the total number of distinct solutions.



解题思路:
这道题与http://blog.csdn.net/kangrydotnet/article/details/47857469类似,用它的第3个方法计算非常快。

class Solution {
public:
int totalNQueens(int n) {
if(n<=0){
return 0;
}
int result = 0;

helper(result, n, 0, 0, 0, 0);

return result;
}

void helper(int& result, int n, int row, int d, int l, int r){
if(row == n){
result++;
return;
}
int p = ((1 << n) - 1) & ~(d | l | r);
int i = 0;
while(p){
if(p&1){
int m = 1<<i;
helper(result, n, row + 1, d | m, (l | m) << 1, (r | m) >> 1);
}
i++;
p = p>>1;
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ leetcode