zoukankan      html  css  js  c++  java
  • 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;
    }

  • 相关阅读:
    将python的代码文件打包成可执行文件
    SpringBoot整合JdbcTemplate连接Mysql
    Golang开发环境搭建
    java中的Lamdba表达式和Stream
    MySQL 优化1
    MySQL you *might* want to use the less safe log_bin_trust_function_creators variable
    MySQL mysqlbinlog
    MySQL 事件调度器
    MySQL 忘记密码解决办法
    MySQL 创建自定义函数(2)
  • 原文地址:https://www.cnblogs.com/djcsch2001/p/2035146.html
Copyright © 2011-2022 走看看