

class Solution {
public:
vector<int> pos;
bool IsVaild(int k, int p) {
for(int i=0; i<k; i++) {
if(pos[i] == p || abs(pos[i]-p) == abs(i-k)) {
return false;
}
}
return true;
}
void dfs(int start, const int n, int &cnt) {
if(start == n) {
cnt++;
return;
}
else
{
for(int i=0; i<n; i++)
{
if(IsVaild(start,i)) {
pos[start] = i;
dfs(start+1,n,cnt);
}
}
}
}
int totalNQueens(int n) {
pos.resize(n,-1);
int cnt = 0;
dfs(0,n,cnt);
return cnt;
}
};
411

被折叠的 条评论
为什么被折叠?



