最近用C++递归形式实现了8皇后问题,可能效率有点低
#include <iostream>
using namespace std;
int count=0;
void placeQueen(int m,int flag[8][8],char chess[8][8])
{
int j;
for(j=0;j<8;j++)
if(flag[m][j]==0)
{
int ii,jj;
char c[8][8];
int f[8][8];
for(ii=0;ii<8;ii++)
for(jj=0;jj<8;jj++)
{
c[ii][jj]=chess[ii][jj];
f[ii][jj]=flag[ii][jj];
}
for(ii=0;ii<8;ii++)
for(jj=0;jj<8;jj++)
{
if(f[ii][jj]==0 && (ii+jj==m+j || m==ii || j==jj || m-j==ii-jj))
f[ii][jj]=-1;
}
c[m][j]='#';
f[m][j]=1;
if(m==7)
{
cout<<++count<<endl;
for(ii=0;ii<8;ii++)
{
for(jj=0;jj<8;jj++)
{
cout<<c[ii][jj]<<" ";
}
cout<<endl;
}
cout<<endl;
cout<<endl;
return;
}
else placeQueen(m+1,f,c);
}
//if(j==8)return;
}
void main()
{
char c[8][8];
int f[8][8];
int i,j;
for(i=0;i<8;i++)
for(j=0;j<8;j++)
{
f[i][j]=0;
c[i][j]='*';
}
// for(i=0;i<8;i++)
placeQueen(0,f,c);
}
分享到:
相关推荐
c++递归实现八皇后。程序求出了满足八皇后条件的所有情况,总共是92这情况。
以下是用C++实现八皇后问题的基本步骤: 1. 初始化棋盘:创建一个8x8的二维数组,所有元素初始化为0。 2. 定义递归函数:函数接受行号作为参数。在函数内部,遍历当前行的所有列,尝试放置皇后。 3. 检查放置:...
四皇后问题的递归实现,简单易懂,适合学习人工智能
八皇后问题,用递归算法非常典型。这里用栈来进行回溯。运行过后没有问题。新手,请指点。
c++编的八皇后问题,有需要的赶快来下载吧
该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在...
本资源是数据结构中利用非递归法实现n皇后问题的一个C++代码,仅供参考,欢迎指正
### 八皇后问题的递归实现与C++代码解析 #### 问题背景及目标 **八皇后问题**是一个经典的计算机科学问题,其目标是在8×8的国际象棋棋盘上放置8个皇后,使得任意两个皇后都不会互相攻击。根据国际象棋规则,皇后...
n皇后问题C++实现 n皇后问题是计算机科学中的一种经典问题,旨在寻找一种算法,可以将n个皇后摆放在n*n的棋盘上,使得每个皇后不在同一行、同一列或同一斜线上。该问题的解决需要使用回溯法,首先初始化一个一维...
八皇后的非递归方法实现,速度较快。有简单的见之策路
《n皇后非递归C++实现详解》 ...总结,n皇后问题的非递归C++实现主要依赖于回溯算法,通过迭代方式生成所有可能的皇后布局并检查其合法性。理解和实现这种解决方案不仅可以提高编程技能,还能深化对算法思维的理解。
《C++实现n皇后问题的非递归方法详解》 n皇后问题是一个经典的计算机科学问题,它要求在n×n的棋盘上放置n个皇后,使得任何两个皇后都不能在同一行、同一列或同一对角线上。这个问题可以用来检验算法的逻辑思维能力...
简洁高效的八皇后问题C++实现,其中主要运用递归的方法。八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其...
在C语言实现中,"n皇后问题.cpp"和"N皇后非递归.cpp"文件可能分别包含了递归和非递归的代码实现。这些代码通常包含定义棋盘结构、检查冲突、放置皇后、回溯等核心函数。通过阅读和理解这些代码,你可以更深入地了解...
下面是使用C++语言实现的N皇后问题的解决方案。 类的设计 在解决N皇后问题时,我们可以使用面向对象的设计思想设计一个名为Queen的类,该类具有以下几个重要的成员变量和成员函数: * 成员变量:num(表示N皇后...
皇后问题递归解法 使用递归算法 C++ 皇后太多就会比较慢
3. **递归(Recursion)**:n皇后问题的解决方案往往使用递归函数,通过递归地放置皇后并检查冲突来实现。递归函数通常接受当前行数作为参数,并尝试在该行放置皇后。 4. **条件判断(Conditional Statements)**:...
资源包中包含利用递归、栈两种方案解决八皇后问题的代码(含详细注释),此外包含一份代码详解的word文档。望采纳。
5. **代码实现**:`main.cpp`文件应该包含了主函数,它调用了处理N皇后问题的递归函数。程序的入口通常会先读取N的值,然后调用N皇后问题的解决方案,并输出结果。在`N皇后问题.exe`中,这个编译后的可执行文件是...
接下来,我们来看如何用C++实现迭代法解n皇后问题。迭代法通常涉及深度优先搜索(DFS),配合回溯来寻找可能的解决方案。 首先,定义一个二维数组`board`表示棋盘,用1表示皇后的位置,0表示空位。然后,我们需要一...