文档章节

非递归的八皇后C++

侯禹
 侯禹
发布于 2013/09/21 00:13
字数 174
阅读 114
收藏 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;
}


© 著作权归作者所有

共有 人打赏支持
侯禹
粉丝 96
博文 49
码字总数 34362
作品 0
海淀
程序员
私信 提问
这次不喷了,但说说编程语言性能误区

今天翻点排序的资料。看了个帖子,原帖内容如下: http://www.cnblogs.com/zhangchaoyang/articles/2234815.html 结论是如下,首先说明这个结论有问题,结论如果增加使用特定“创建的栈”和“...

中山野鬼
2013/08/17
363
2
C++模版编程实现Haskell的函数模式匹配特性[图]

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

原创小博客
07/18
0
0
shell学习-grep命令的使用

多个文件中查找 grep file 1file2 file3 使用正则表达式 grep -E "[a-z]+" file.py egrep "[a-z]+" file.py 只打印匹配的文本 egrep -o "[a-z]+" file.py egrep -o -n "[a-z]+" file.py 结果......

writeademo
09/30
0
0
STL系列之十 全排列(百度迅雷笔试题)

全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,...

彭博
2012/04/12
480
0
C语言感触篇:十年之后重学C语言,岁月蹉跎,我听闻你始终一个人

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

这个人很懒什么都没留下
07/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

GROUP BY GROUPING SETS

GROUPING SETS 子句是 SELECT 语句的 GROUP BY 子句的扩展。通过 GROUPING SETS 子句,您可采用多种方式对结果分组,而不必使用多个 SELECT 语句来实现这一目的。这就意味着,能够减少响应时...

hblt-j
7分钟前
0
0
selenium之表格的定位

真的勇士, 敢于直面惨淡的warning、 敢于正视淋漓的error 目录 被测试网页的HTML代码 1.遍历表格所有单元格 2.定位表格中的某个元素 3.定位表格中的子元素 总结 浏览器网页常常会包含各类表...

程序猿拿Q
12分钟前
0
0
adb命令启动展讯平台工厂模式

adb命令启动展讯工厂模式: adb shell am start com.sprd.engineermode/com.sprd.engineermode.EngineerModeActivity...

东街小霸王
13分钟前
0
0
mtu值怎样设置才网速最快

一、什么是 MTU 值 1 从字面上来说,MTU 是英文 Maximum Transmission Unit 的缩写,即最大传输单元,它的单位是字节。 在我们常用的以太网中,MTU 一般是 1500,而无线路由器默认一般是 14...

Clarence_D
31分钟前
1
0
McAfee阻止邮件发送功能

自己写的邮件发送功能,在本地机器上可以发送,但是放到服务器上面之后就不能发送了,捕获到的异常是“以一个访问权限不允许的方式做了一个访问套接字的尝试”,找了很久,终于发现是被McAfe...

壹峰
36分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部