`
缥缈孤鸿
  • 浏览: 41990 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

8皇后问题c++的递归实现

    博客分类:
  • C++
阅读更多
最近用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这情况。

    C++递归实现八皇后问题

    以下是用C++实现八皇后问题的基本步骤: 1. 初始化棋盘:创建一个8x8的二维数组,所有元素初始化为0。 2. 定义递归函数:函数接受行号作为参数。在函数内部,遍历当前行的所有列,尝试放置皇后。 3. 检查放置:...

    四皇后问题-递归实现

    四皇后问题的递归实现,简单易懂,适合学习人工智能

    C++源代码 八皇后问题非递归实现

    八皇后问题,用递归算法非常典型。这里用栈来进行回溯。运行过后没有问题。新手,请指点。

    八皇后问题(递归+非递归)

    c++编的八皇后问题,有需要的赶快来下载吧

    C++八皇后问题代码,递归实现

    该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在...

    非递归法实现n皇后问题

    本资源是数据结构中利用非递归法实现n皇后问题的一个C++代码,仅供参考,欢迎指正

    八皇后 递归实现 c++ 算法

    ### 八皇后问题的递归实现与C++代码解析 #### 问题背景及目标 **八皇后问题**是一个经典的计算机科学问题,其目标是在8×8的国际象棋棋盘上放置8个皇后,使得任意两个皇后都不会互相攻击。根据国际象棋规则,皇后...

    n皇后问题c++实现

    n皇后问题C++实现 n皇后问题是计算机科学中的一种经典问题,旨在寻找一种算法,可以将n个皇后摆放在n*n的棋盘上,使得每个皇后不在同一行、同一列或同一斜线上。该问题的解决需要使用回溯法,首先初始化一个一维...

    八皇后的非递归方法实现

    八皇后的非递归方法实现,速度较快。有简单的见之策路

    n皇后非递归 c++源码实现

    《n皇后非递归C++实现详解》 ...总结,n皇后问题的非递归C++实现主要依赖于回溯算法,通过迭代方式生成所有可能的皇后布局并检查其合法性。理解和实现这种解决方案不仅可以提高编程技能,还能深化对算法思维的理解。

    n皇后的非递归实现--C++

    《C++实现n皇后问题的非递归方法详解》 n皇后问题是一个经典的计算机科学问题,它要求在n×n的棋盘上放置n个皇后,使得任何两个皇后都不能在同一行、同一列或同一对角线上。这个问题可以用来检验算法的逻辑思维能力...

    八皇后问题的C++实现

    简洁高效的八皇后问题C++实现,其中主要运用递归的方法。八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其...

    N皇后求解问题——递归和回溯方法

    在C语言实现中,"n皇后问题.cpp"和"N皇后非递归.cpp"文件可能分别包含了递归和非递归的代码实现。这些代码通常包含定义棋盘结构、检查冲突、放置皇后、回溯等核心函数。通过阅读和理解这些代码,你可以更深入地了解...

    N皇后问题C++代码

    下面是使用C++语言实现的N皇后问题的解决方案。 类的设计 在解决N皇后问题时,我们可以使用面向对象的设计思想设计一个名为Queen的类,该类具有以下几个重要的成员变量和成员函数: * 成员变量:num(表示N皇后...

    用C++写的皇后问题的递归算法

    皇后问题递归解法 使用递归算法 C++ 皇后太多就会比较慢

    用C++实现的n皇后问题

    3. **递归(Recursion)**:n皇后问题的解决方案往往使用递归函数,通过递归地放置皇后并检查冲突来实现。递归函数通常接受当前行数作为参数,并尝试在该行放置皇后。 4. **条件判断(Conditional Statements)**:...

    八皇后实验-递归实现、栈的实现.zip

    资源包中包含利用递归、栈两种方案解决八皇后问题的代码(含详细注释),此外包含一份代码详解的word文档。望采纳。

    N皇后问题 C/C++实现

    5. **代码实现**:`main.cpp`文件应该包含了主函数,它调用了处理N皇后问题的递归函数。程序的入口通常会先读取N的值,然后调用N皇后问题的解决方案,并输出结果。在`N皇后问题.exe`中,这个编译后的可执行文件是...

    n 皇后问题C++程序实现跌代方法

    接下来,我们来看如何用C++实现迭代法解n皇后问题。迭代法通常涉及深度优先搜索(DFS),配合回溯来寻找可能的解决方案。 首先,定义一个二维数组`board`表示棋盘,用1表示皇后的位置,0表示空位。然后,我们需要一...

Global site tag (gtag.js) - Google Analytics