Description
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.
Given an integer n, return the number of distinct solutions to the n-queens puzzle.
Example
Input: 4
Output: 2
解题
和51一模一样……这里位操作就贼快……
class Solution {
int nn;
int count;
public void FindQueens(int k, int l, int r){
if(k == nn){
count ++;
return;
}
int x = nn & (~ (k | l | r));
while(x != 0){
int index = x & (~ x + 1); //求补码,然后补码和原码求与,找到最右一个1,
x -= index;
FindQueens(k | index, (l | index) << 1, (r | index) >> 1);
}
}
public int totalNQueens(int n) {
int k, l, r, x, i;
nn = (int) (Math.pow(2, n) - 1);
k = 0;
l = 0;
r = 0;
count = 0;
FindQueens(k, l, r);
return count;
}
}