文档章节

非递归的八皇后C++

侯禹
 侯禹
发布于 2013/09/21 00:13
字数 174
阅读 108
收藏 0

其实就是利用了栈来实现DFS,用递归的方法虽然容易理解,但是容易有嵌套层数过多带来的问题,所以用栈更好一些

#include <cstdio>
#include <iostream>
#include <cmath>
using namespace std;
const int N = 8;
int x[N];
int num = 1;
void dayin()
{
    cout<<"num:"<<num++<<endl;
    for(int i=1;i<=N;i++)
    {
        for(int j=1;j<=N;j++)
        {
            if(x[i]==j)cout<<"Q";
            else cout<<"#";
        }cout<<endl;
    }
}
bool isOk(int k)
{
    for(int i=1;i<k;i++)
    {
        if(x[i]==x[k]||fabs(i-k)==fabs(x[i]-x[k]))return false;
    }
    return true;
}
void DFS()
{
    int k=1;x[1]=0;
    while(k>0)
    {
        x[k]++;
        while(x[k]<=N&&!(isOk(k)))
        {
            x[k]++;
        }
        if(x[k]<=N)
        {
            if(k==N)dayin();
            else k++,x[k]=0;
        }
        else k--;
    }
}
int main(void)
{
    DFS();
    return 0;
}


© 著作权归作者所有

共有 人打赏支持
侯禹
粉丝 95
博文 49
码字总数 34362
作品 0
海淀
程序员
私信 提问
C++模版编程实现Haskell的函数模式匹配特性[图]

C++模版编程实现Haskell的函数模式匹配特性[图]: 大神 Bartosz Milewski 在2009年写了一篇文章《What Does Haskell Have to Do with C++?》,使用C++实现Haskell函数式编程语言的一些特性。...

原创小博客
07/18
0
0
CSDN回帖得分大全(近两年)

√ vs2005调用dll的时候Initialize()函数返回错误 [VC/MFC 基础类] √ 为什么我创建登陆框之后,然后获取登陆框的数据时候总是出现非法操作! [VC/MFC 界面] √ CFileFind::FindFile 支持通配...

junwong
2012/03/09
0
0
C语言感触篇:十年之后重学C语言,岁月蹉跎,我听闻你始终一个人

C语言感触篇:十年之后重学C语言,岁月蹉跎,我听闻你始终一个人 1.1 多次自学,不得其法 距离大学时学习C语言已有十个年头了。印象里最深的就是当时一位海归老师,在讲课时流露出对K&R的崇敬...

这个人很懒什么都没留下
07/11
0
0
C语言编程学习之递归实现汉诺塔图解

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/19
0
0
[c/c++奇技淫巧]不用循环判断输出5到1

偶尔看到的一道题,和哥们几个讨论了一下,这玩意,不是循环就是递归了么,当然,只要达到目的,管他什么循环递归,对吧。现在总结一下我们能想到的所有的方法,大家有新的想法欢迎跟帖讨论~...

-水水-
2014/10/08
0
7

没有更多内容

加载失败,请刷新页面

加载更多

python中sort和sorted函数小结

L.sort(cmp=None, key=None, reverse=False) sorted(iterable, cmp=None, key=None, reverse=False) 这样看,sorted函数只比sort函数多一个iterable参数,其余没什么不同,iterable是一个迭代......

上官夏洛特
27分钟前
1
0
thinkphp 常用SQL执行语句总结

第一条:Db::tablera('vr_panomas')->where(['delete_time'=>0,'id'=>['in',$pids]])->field(['id'=>'id','post_thumb'=>'thumb','post_title'=>'title','post_tags'=>'tags','post_price'=>......

koothon
36分钟前
1
0
支付宝返回状态resultStatus意思

上一篇集成支付宝的时候,会有一些支付宝返回的resultStatus,具体意思是: 9000 订单支付成功 8000 正在处理中 4000 订单支付失败 6001 用户中途取消 6002 网络连接出错 还有memo,意思就是...

RainOrz
41分钟前
1
0
electron webview 页面加载事件顺序

1.did-start-loading 页面开始加载 2.load-commit 主页面文档加载 3.page-title-updated title 4.dom-ready 主页面 dom 加载完成 5.load-commit frame文档加载 6.did-frame-finish-load fram......

dubox
46分钟前
1
0
cron语法格式

Seconds Minutes Hours DayofMonth Month DayofWeek Year或 Seconds Minutes Hours DayofMonth Month DayofWeek...

JavaSon712
46分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部