• N皇后问题


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

  • 相关阅读:
    我的第一次JAVA实训——校园公用房管理系统
    打我吧,不写了
    我有我的方向
    JAVA 算法练习(二)
    JAVA 算法练习(一)
    php设置时区和strtotime转化为时间戳函数
    dos中文乱码怎么办?
    织梦怎么调用栏目SEO标题
    for in循环介绍以及陷阱
    浅谈js for循环输出i为同一值的问题(闭包解决)
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035146.html
Copyright © 2020-2023  润新知