与51. N皇后/C++大同小异,甚至更简单些。
class Solution {
private:
vector<bool> col,diaLeft,diaRight;
int putQueen(int n,int index){
int count=0;
if(index==n)
return 1;
for(int i=0;i<n;++i){
if(!col[i] && !diaLeft[index+i] && !diaRight[index-i+n-1]){
col[i]=true;
diaLeft[index+i]=true;
diaRight[index-i+n-1]=true;
count+=putQueen(n,index+1);
col[i]=false;
diaLeft[index+i]=false;
diaRight[index-i+n-1]=false;
}
}
return count;
}
public:
int totalNQueens(int n) {
col=vector<bool>(n,false);
diaLeft=vector<bool>(n,false);
diaRight=vector<bool>(n,false);
return putQueen(n,0);
}
};