zoukankan      html  css  js  c++  java
  • [数据结构] N皇后问题

    代码:

    #include <iostream>
    #include <string.h>
    #include <algorithm>
    using namespace std;
    const int N=100;
    int c[N];//皇后第i行放在第几列上
    int n,total;
    int cc;//方法数
    
    void dfs(int cur)
    {
        if(cur>n)
        {
            cout<<"第"<<cc++<<"种方法:"<<endl<<endl;
            for(int i=1;i<=n;i++)
            {
                cout<<"第 "<<i<<" 个皇后放在第 "<<i<<" 行的第 "<<c[i]<<" 列上"<<endl<<endl;
            }
            total++;
            return;
        }
        for(int i=1;i<=n;i++)
        {
            c[cur]=i;
            int ok=1;
            for(int j=1;j<cur;j++)
            {
                if(c[cur]==c[j]||cur-c[cur]==j-c[j]||cur+c[cur]==j+c[j])
                {
                    ok=0;
                    break;
                }
            }
            if(ok)
                dfs(cur+1);
        }
    }
    
    int main()
    {
        while(1)
        {
            cout<<"请输入皇后的个数: "<<endl;
            cin>>n;
            if(n<=0)
            {
                cout<<"输入不合法,程序退出!"<<endl;
                break;
            }
            cc=1;
            total=0;
            dfs(1);
            cout<<"总计有"<<total<<"个解"<<endl<<endl;
        }
        return 0;
    }
    

    运行截图:



  • 相关阅读:
    【多线程】工具类汇总
    【JVM】GC日志样例解读
    【Docker】
    XXS level5
    XXS level4
    XXS level3
    XXS level2
    SQLI DUMB SERIES-6
    SQLI DUMB SERIES-5
    XXS level1
  • 原文地址:https://www.cnblogs.com/sr1993/p/3697751.html
Copyright © 2011-2022 走看看