class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型 the n
* @return int整型
*/
int cnt=0;
int vis[12]={0};
int vis1[23]={0};
int vis2[23]={0};
void Biao(int x,int i,int j,int n)
{
vis[j]=x;
vis1[i-j+n-1]=x;
vis2[i+j]=x;
}
void dfs(int n,int i)
{
if(i==n)
{
cnt++;
return;
}
for(int j=0;j<n;j++)
{
if(!vis[j]&&!vis1[i-j+n-1]&&!vis2[i+j])
{
Biao(1, i, j, n);
dfs(n,i+1);
Biao(0,i,j,n);
}
}
}
int Nqueen(int n) {
// write code here
if (n <= 0) return 0;
if (n == 1) return 1;
cnt=0;
memset(vis,0,sizeof(vis));
memset(vis1,0,sizeof(vis1));
memset(vis2,0,sizeof(vis2));
dfs(n,0);
return cnt;
}
};