1.题目
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
2.题意
统计N皇后的解的个数
3.分析
N-Queens的简化版,直接使用一个计数变量即可,无需保存结果的值
4.代码
class Solution {
public:
int totalNQueens(int n) {
int res = 0;
vector<int> pos(n, -1);
solveNQueensDFS(pos, 0, res);
return res;
}
private:
void solveNQueensDFS(vector<int> &pos, int row, int &res)
{
int n = pos.size();
if(row == n)
{
++res;
}
else
{
for(int col = 0; col < n; ++col)
{
if(isValid(pos, row, col))
{
pos[row] = col;
solveNQueensDFS(pos, row + 1, res);
pos[row] = -1;
}
}
}
}
bool isValid(vector<int> &pos, int row, int col)
{
for(int i = 0; i < row; ++i)
{
if(pos[i] == col || abs(row - i) == abs(col - pos[i]))
return false;
}
return true;
}
};