Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
分析:
典型的回溯法题目。
class Solution {
public:
int cnt=0;
bool check(vector<int> pos,int r,int p)
{
for(int i=0;i<r;++i)
if(pos[i]==p||abs(i-r)==abs(pos[i]-p)) return 0;
return 1;
}
void fun(vector<int> pos,int r)
{
if(r==pos.size())
{
cnt++;
return;
}
for(int i=0;i<pos.size();++i)
{
if(check(pos,r,i))
{
pos[r]=i;
fun(pos,r+1);
}
}
}
int totalNQueens(int n) {
vector<int> pos(n,0);
fun(pos,0);
return cnt;
}
};