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; } };