N-Queens II
Follow up for N-Queens problem.
Now, instead outputting board configurations, return the total number of distinct solutions.
class Solution {
vector<bool> row,col,lslash,rslash;
int result;
public:
void dfs(int deep,int n){
if(deep==n){
result++;
return;
}
for(int i=0;i<n;i++){
if(!row[deep]&&!col[i]&&!lslash[deep+i]&&!rslash[deep+n-1-i]){
row[deep]=col[i]=lslash[deep+i]=rslash[deep+n-1-i]=true;
dfs(deep+1,n);
row[deep]=col[i]=lslash[deep+i]=rslash[deep+n-1-i]=false;
}
}
}
int totalNQueens(int n) {
row.assign(n,false);//某行是否有皇后了
col.assign(n,false);//某列是否有皇后了
lslash.assign(2*n,false);//左斜线是否有皇后了
rslash.assign(2*n,false);//右斜线是否有皇后了
result=0;
dfs(0,n);
return result;
}
};