N皇后问题

#include
#include

using namespace std;

bool place(int x[],int k);
void queen(int n,int x[]);
void Output(int n,int x[]);
int main(int argc, char *argv[])
{
    cout<<"请输入皇后的个数/n";
    int n;
    cin>>n;
    int x[n+1];
    x[0]=0;
    cout<<"解向量是----/n";
    queen(n,x);
    system("PAUSE");
    return EXIT_SUCCESS;
}
bool place(int x[],int k)
{
    for(int i=1;i        if((x[i]==x[k])||(abs(x[i]-x[k])==abs(i-k)))
            return 0;
    return 1;
}
void queen(int n,int x[])
{
    int k=1;
    long num=0;
    x[1]=0;
    while(k>0)
        {
            x[k]+=1;
            while((x[k]<=n)&&(!place(x,k)))
                x[k]+=1;
            if(x[k]<=n)
                if(k==n)
                    {
                        num++;
                        Output(n,x);
                    }
                else
                    x[++k]=0;
            else
                x[k--]=0;
        }
    system("PAUSE");
    cout<<"一共有"<    return;
}
void Output(int n,int x[])
{         
    cout<<"[";
    for(int i=1;i        cout<    cout<    return;
}

你可能感兴趣的:(数据结构和算法)