#include#includeint sum=0;bool Place(int k, int i,int* x)/判定两个皇后是否在同一列或在同一斜线上 for (int j=0;jk;j+) if (xj=i) | (abs(xj-i)=abs(j-k) return false; return true; void NQueens(int k,int n,int *x) for (int i=0; in;i+) /显式约束的第一种观点,xk=0,1,n-1 if (Place(k,i,x) /约束函数 xk=i; if (k=n-1)for(i=0;in;i+)coutxi ;/输出一个可行解coutendl;sum=sum+1; else NQueens(k+1,n,x);/深度优先进入下一层 void NQueens(int n,int *x) NQueens(0,n,x); void main()int n,i;cout输入N值n;int *x=new intn;for(i=0;in;i+) xi=0;NQueens(0,n,x);coutsumendl;