C++ 八皇后问题

zxz87 zxz87 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区


#include <iostream>
#include <cmath>
using namespace std;
void queen(int row, int col)
{
static int queen_col[8],count = 0,i;
for (i = 0;i < row;i ++) if (col == queen_col[i] || row - i == abs(queen_col[i]-col)) return;
queen_col[row]=col;
if (row<7) for (int i=0;i<8;i++) queen(row+1,i);
else {
cout<<'('<<++count<<')'<<endl;
for (i=0;i<8;i++) {
for (int j=0;j<8;j++) cout<<(j==queen_col[i]);
cout<<endl;
}
cin.get();
}
}

void main()
{
for (int i=0;i<8;i++) queen(0,i);
}

麻烦哪位能把以上八皇后的代码解释一下或添加一下注释,谢谢
...全文

相关推荐

八皇后问题CPP代码

经典的八皇后问题,堆栈的经典应用,使用C++实现源代码。

王清欢Randy

C++实现八皇后问题的方法

本文实例展示了C++实现八皇后问题的方法,是数据结构与算法中非常经典的一个算法。分享给大家供大家参考之用。具体方法如下: 一般在八皇后问题中,我们要求解的是一个8*8的国际象棋棋盘中,放下8个皇后且互相不能攻击的排列总数。皇后的攻击范围为整行,整列,以及其斜对角线。 由于皇后的攻击范围特性,注定我们每行只能放下一个皇后,于是我们要做的只是逐行放下皇后。八皇后问题是回溯法的典型问题。这里我们用的方法很简单: 从第一行开始逐个检索安全位置摆放皇后,一旦有安全位置则考虑下一行的安全位置。如果发现某行没有安全位置,则返回上一行继续检索安全位置;如果发现在最后一行找到了安全位置则输出整个棋盘。 原理很简

weixin_38662122

用C++编程解决八皇后问题源代码

此程序由本人编写,以较简单的方法,简洁的代码解决了八皇后问题,能接触28种不同的方法。

zjlelf

C++基于回溯法解决八皇后问题示例

本文实例讲述了C++基于回溯法解决八皇后问题的方法。分享给大家供大家参考,具体如下: 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。 回溯法指导思想——走不通,就掉头。设计过程:确定问题的解空间;确定结点的扩展规则;搜索。 n皇后问题 要在n*n的国际象棋棋盘中放n个皇后,使任意

weixin_38671048

八皇后问题 c++ 八皇后问题 c++

八皇后问题 c++ 八皇后问题 c++ 八皇后问题 c++

hudashuaige
评论 3
收藏 已收藏
分享
返回顶部
zxz87
新手乐园 33,315 成员 41,769 内容