码迷,mamicode.com
首页 > 其他好文 > 详细

[数据结构] N皇后问题

时间:2014-11-08 20:48:27      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   os   sp   for   数据   div   

代码:

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

执行截图:


bubuko.com,布布扣

[数据结构] N皇后问题

标签:blog   http   io   ar   os   sp   for   数据   div   

原文地址:http://www.cnblogs.com/lcchuguo/p/4083975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!