C++ 代码
class Solution {
public:
vector<int> col,dg,udg;
int cnt;
int ans;
void dfs(int n)
{
if(n==cnt)
{
ans++;
return ;
}
for(int i=0;i<cnt;i++)
if(!col[i]&&!dg[n+i]&&!udg[n-i+cnt])
{
col[i]=dg[n+i]=udg[n-i+cnt]=1;
dfs(n+1);
col[i]=dg[n+i]=udg[n-i+cnt]=0;
}
}
int totalNQueens(int n) {
ans=0;
cnt=n;
col=vector<int>(n);
dg=vector<int>(2*n);
udg=vector<int>(2*n);
dfs(0);
return ans;
}
};