class Solution {
public:
/**
*
* @param n int整型 the n
* @return int整型
*/
bool isVaild(vector<int> pos,int row,int col)
{
for(int i=0;i<row;i++)
{
int col1=pos[i];
if(i==row || col1==col || abs(i-row)==abs(col1-col))
{
return false;
}
}
return true;
}
void dfs(int n,int row, vector<int> &pos,int &res)
{
if(row==n)
{
res++;
return ;
}
for(int i=0;i<n;i++) //第row行第i列
{
if(isVaild(pos,row,i))
{
pos[row]=i;
dfs(n,row+1,pos,res);
}
}
}
int Nqueen(int n) {
int res=0;
vector<int>pos(n,0);//记录皇后的位置,下表表示行,值代表列;
dfs(n,0,pos,res);
return res;
}
};