Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
换汤不换药。。。。
#include <iostream>
#include <vector>
#include <map>
using namespace std;
class Solution {
public:
bool isValid(vector<int>& indices, int c)
{
for(int i=0; i<c;i++){
if(indices[i]==indices[c]|| (abs(indices[i]-indices[c])==c-i))
return false;
}
return true;
}
void nqueens(vector<int>& indices, int c, int n)
{
if (c==n){
count++;
return;
}
for (int i=0; i<n; i++){
indices[c]=i;
if(isValid(indices,c))
nqueens(indices,c+1,n);
}
}
vector<vector<string> > totalNQueens(int n) {
count=0;
vector<int> indices(n,-1);
nqueens(indices,0,n);
return count;
}
private:
int count;
};