N皇后问题

来源:互联网 发布:北京奥运会门票知乎 编辑:程序博客网 时间:2024/05/29 15:05
#include <iostream>using namespace  std;class Queue{friend int nQueue(int n);private:bool place(int k);void backTrack(int t);int n,*x,sum;};bool Queue::place(int k){for(int j=1;j<k;j++)if((abs(k-j)==abs(x[k]-x[j]))||(x[j]==x[k]))return false;return true;}void Queue::backTrack(int t){if(t>n){sum++;for(int i=1;i<=n;i++)cout<<x[i]<<" ";cout<<endl;}else{for(int i=1;i<=n;i++){x[t]=i;if(place(t))backTrack(t+1);}}}int nQueue(int n){Queue X;X.n=n;X.sum=0;int *p=new int[n+1];for(int i=0;i<=n;i++)p[i]=0;X.x=p;X.backTrack(1);delete[] p;return X.sum;}int main(){cout<<nQueue(4)<<endl;system("pause");return 0;}

原创粉丝点击