文档章节

非递归的八皇后C++

侯禹
 侯禹
发布于 2013/09/21 00:13
字数 174
阅读 106
收藏 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++奇技淫巧]不用循环判断输出5到1

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

-水水-
2014/10/08
0
7
C语言编程学习之递归实现汉诺塔图解

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

小辰带你看世界
05/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
2
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
2
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
68
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部