`
缥缈孤鸿
  • 浏览: 40456 次
  • 性别: 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++实现八皇后问题 用递归的方法,实现八皇后问题

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

    c++递归实现八皇后。程序求出了满足八皇后条件的所有情况,总共是92这情况。

    四皇后问题-递归实现

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

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

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

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

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

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

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

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

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

    非递归法实现n皇后问题

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

    八皇后的非递归方法实现

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

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

    n皇后非递归实现,n皇后非递归实现,n皇后非递归实现,n皇后非递归实现,n皇后非递归实现

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

    在一个8×8的棋盘里放置8个皇后,要求每个皇后两两之间不相"冲"(在每一横列竖列斜列只有一个皇后)。 〖问题分析〗(聿怀中学吕思博) 这道题可以用递归循环来做,分别一一测试每一种摆法,直到得出正确的答案。主要...

    八皇后问题的C++实现

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

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

    N皇后问题求解,分别是递归方法实现和非递归方法实现,后者采用回溯方法,C语言实现的

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

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

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

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

    N皇后问题C++

    利用回溯法求解N皇后问题(N的值不能小于4,小于4无解),定义三个函数,一个用于判断安置元素的合法性,一个用于递归安置元素,还有一个用于显示皇后安置问题的布局,用一个main函数实现代码功能。输入N值,显示出N...

    八皇后C++实现

    递归 八皇后问题 C++实现,代码简单,回溯高效

    八皇后问题的递归实现

    八皇后问题:在一个8X8的国际象棋棋盘中,每行放1个皇后,共放8个皇后,且互不攻击。 研究共有多少种不同的放法,称为八皇后问题

    用递归求解八皇后问题

    用递归方法来求解八皇后问题,C++源码,有需要可以下载

    8皇后算法的非递归算法

    用非递归解决八皇后的问题,是经典的非递归算法,学习数据结构中很有用

Global site tag (gtag.js) - Google Analytics