题目链接:https://leetcode.com/problems/n-queens-ii/#/description
这道题也是八皇后问题的变形,不过上一题是要求输出各组不同的解,这道题是输出解的个数,只需要稍微改动就可以了,设置一个变量sum来记录解的总数。每得到一组解sum就加一即可。
class Solution {
public:
int *x;
int sum = 0;
int totalNQueens(int n) {
// sum = 0;
x = new int[n+1];
for(int i=0; i<=n; i++){
x[i] = 0;
}
n_queens(n, 1);
return sum;
}
void n_queens(int n, int k ){
if(k > n){
sum++;
// cout<<sum<<",";
}
else{
for(int i=1; i<=n; i++){
x[k] = i;
if(legal(k)) n_queens(n,k+1);
}
}
}
bool legal(int k){
for(int j = 1; j<k; j++){
if((abs(x[j] - x[k]) == abs(j - k)) || (x[j] == x[k]))
return false;
}
return true;
}
};