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[]...

#include <cstdlib>
#include <iostream>

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<k;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<<"一共有"<<num<<"种情况\n";
    return;
}
void Output(int n,int x[])
{         
    cout<<"[";
    for(int i=1;i<n;i++)
        cout<<x[i]<<",";
    cout<<x[n]<<"]"<<endl;
    return;
}

相关文章
|
8月前
|
机器学习/深度学习
N皇后问题(HDU—2253)
N皇后问题(HDU—2253)
|
机器学习/深度学习
N皇后问题
N皇后问题
84 0
|
机器学习/深度学习 存储 算法
回溯法求解N皇后问题
回溯法求解N皇后问题
166 0
Leecode 695. 岛屿的最大面积
Leecode 695. 岛屿的最大面积
46 0
|
机器学习/深度学习 算法 Java
|
机器学习/深度学习
带你轻松拿捏N皇后问题
要求任何两个皇后不同行、不同列,也不在同一 条斜线上
145 0
带你轻松拿捏N皇后问题
|
机器学习/深度学习 算法
【回溯算法篇】N皇后问题
【回溯算法篇】N皇后问题
【回溯算法篇】N皇后问题
|
机器学习/深度学习 算法
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
<<算法很美>>——(六)——回溯算法(下)—N皇后问题
|
机器学习/深度学习 算法
模拟退火-n皇后问题
模拟退火-n皇后问题
|
算法
n皇后问题
n皇后问题
121 0

热门文章

最新文章