最近用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++实现八皇后问题 用递归的方法,实现八皇后问题
c++递归实现八皇后。程序求出了满足八皇后条件的所有情况,总共是92这情况。
四皇后问题的递归实现,简单易懂,适合学习人工智能
八皇后问题,用递归算法非常典型。这里用栈来进行回溯。运行过后没有问题。新手,请指点。
n皇后非递归 c++源码实现 n皇后非递归 c++源码实现 n皇后非递归 c++源码实现
c++编的八皇后问题,有需要的赶快来下载吧
该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在...
本资源是数据结构中利用非递归法实现n皇后问题的一个C++代码,仅供参考,欢迎指正
八皇后的非递归方法实现,速度较快。有简单的见之策路
n皇后非递归实现,n皇后非递归实现,n皇后非递归实现,n皇后非递归实现,n皇后非递归实现
在一个8×8的棋盘里放置8个皇后,要求每个皇后两两之间不相"冲"(在每一横列竖列斜列只有一个皇后)。 〖问题分析〗(聿怀中学吕思博) 这道题可以用递归循环来做,分别一一测试每一种摆法,直到得出正确的答案。主要...
简洁高效的八皇后问题C++实现,其中主要运用递归的方法。八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其...
N皇后问题求解,分别是递归方法实现和非递归方法实现,后者采用回溯方法,C语言实现的
皇后问题递归解法 使用递归算法 C++ 皇后太多就会比较慢
资源包中包含利用递归、栈两种方案解决八皇后问题的代码(含详细注释),此外包含一份代码详解的word文档。望采纳。
利用回溯法求解N皇后问题(N的值不能小于4,小于4无解),定义三个函数,一个用于判断安置元素的合法性,一个用于递归安置元素,还有一个用于显示皇后安置问题的布局,用一个main函数实现代码功能。输入N值,显示出N...
递归 八皇后问题 C++实现,代码简单,回溯高效
八皇后问题:在一个8X8的国际象棋棋盘中,每行放1个皇后,共放8个皇后,且互不攻击。 研究共有多少种不同的放法,称为八皇后问题
用递归方法来求解八皇后问题,C++源码,有需要可以下载
用非递归解决八皇后的问题,是经典的非递归算法,学习数据结构中很有用