`
wanghailiang333
  • 浏览: 199058 次
  • 性别: Icon_minigender_1
  • 来自: 广西
社区版块
存档分类
最新评论

八皇后递归回溯解法

阅读更多

这两天看了下有关递归回溯的问题,自己写了一个八皇后的递归回溯求解答数量的程序,自己HI~一下。

 

#include <iostream>
#include <cstring>
using namespace std;

const int MAX = 8;  //棋盘大小

int G[MAX][MAX];

int solveNum = 0;

int canPut(int _i,int _j){
	int i,j;
	//up
	i = _i;
	j = _j;
	while(i>0){
		if(!G[--i][j])
			return 0;
	}
	//left up
	i = _i;
	j = _j;
	while(i>0 && j>0){
		if(!G[--i][--j])
			return 0;
	}
	//right up
	i = _i;
	j = _j;
	while(i>0 && j<MAX-1){
		if(!G[--i][++j])
			return 0;
	}
	return 1;
}

void Solve(int i,int j){
	if(i == MAX){
		solveNum++;
	}else{
		if(canPut(i,j)){
			G[i][j] = 0;
			Solve(i+1,0);
			G[i][j] = -1;    //回溯
		}
		if((j+1)<MAX)
			Solve(i,j+1);
	}

}



int main(){

	memset(G , -1 , sizeof(G));

	Solve(0,0);

	cout<<solveNum<<endl;

	return 0;
}
 
1
1
分享到:
评论

相关推荐

    八皇后递归解法

    八皇后问题是一种回溯思想的体现,可以用C语言里面的递归算法实现

    八皇后问题详细的解法-23页 PPT PDF版.pdf

    - 八皇后问题的非递归回溯算法:使用栈等数据结构代替递归来实现回溯过程,这种方法更加灵活,但在实际应用中不如递归方法常见。 通过以上分析可以看出,八皇后问题的不同解法各有特点,从简单的枚举算法到高效的...

    八皇后 的三种解法 (java编写)

    首先,我们来了解一下八皇后问题的基本解法。一般来说,解决八皇后问题的方法主要有以下三种: 1. **深度优先搜索(DFS)**:这是最常见的解决方法,利用递归的方式,每次尝试在当前行放置一个皇后,并检查是否与前...

    八皇后问题C解法

    通过上述分析,我们可以看出,八皇后问题的C语言解法主要依赖于递归和回溯策略,以及合理的数据结构设计来高效解决问题。这种方法不仅解决了八皇后问题,还展示了如何通过算法优化来解决更广泛的排列组合问题。理解...

    python 使用递归回溯完美解决八皇后的问题

    【八皇后问题】是一个经典的计算机科学问题,旨在在8×8的国际象棋棋盘上放置8个皇后,使得任何两个皇后都无法通过同一行、同一列或同一对角线互相攻击。...通过这种方式,我们可以观察到八皇后问题有多种不同的解法。

    八皇后问题c++解法

    本篇介绍的八皇后问题C++解法采用回溯算法实现。通过递归地尝试在每一行放置皇后,并利用回溯机制来撤销非法的决策,最终能够找出所有可能的解法。这种方式不仅简洁高效,而且易于理解和实现。对于学习回溯算法和...

    八皇后问题C语言解法

    ### 八皇后问题C语言解法 #### 一、八皇后问题概述 八皇后问题是一个经典的问题,在棋盘上放置八个皇后,要求任何两个皇后不能处于同一行、同一列或同一对角线上。该问题可以扩展到任意大小的棋盘(N皇后问题),...

    C#八皇后解法

    八皇后问题是一个经典的回溯算法问题,它源于19世纪由数学家鲁道夫·路德维希·卡尔·莫里斯·莱昂哈德·欧拉提出,旨在在8×8的棋盘上放置8个皇后,使得任意两个皇后都无法在同一行、同一列或同一斜线上互相攻击。...

    回溯法解决八皇后问题

    文章中提到了使用C语言实现八皇后问题的解法。具体的实现通常涉及递归函数的编写,以及使用数组来记录每个皇后的位置。递归函数会不断尝试放置皇后,并在发现冲突时回溯。 ##### (二)性能考量 1. **时间复杂度**...

    queen问题的递归解法

    虽然随着皇后数量的增加,问题的复杂度会呈指数级增长,但在小规模问题上,如经典的八皇后问题,递归解法可以快速找到所有可能的解。 通过以上分析,我们可以深入理解皇后问题的递归解法,掌握其核心思想和实现细节...

    八皇后问题MFC实现

    八皇后问题是计算机科学中一个经典的回溯算法应用实例,它要求在8×8的棋盘上摆放8个皇后,使得任何两个皇后都无法在同一行、同一列或同一对角线上互相攻击。这个问题最早由数学家路易斯·卡洛在19世纪提出,至今...

    八皇后演示

    这个项目不仅解决了八皇后问题,还提供了动态演示功能,用户可以在程序运行过程中随时控制,观察解法的形成过程。 项目中的文件主要包括以下几个部分: 1. `EightQueen.aps`:这是Visual C++项目的信息文件,包含...

    自己写的java八皇后小游戏源代码

    八皇后问题是一个著名的回溯算法问题,它要求在8×8的棋盘上放置8个皇后,使得任何两个皇后都无法在同一行、同一列或对角线上互相攻击。下面将详细介绍这个项目涉及的Java编程知识、Swing库的应用以及八皇后问题的...

    demo.rar_DEMO_八皇后 _八皇后问题

    下面我们将深入探讨八皇后问题的解法以及如何通过代码实现。 首先,我们需要理解问题的本质。八皇后问题的关键在于寻找所有可能的放置方式,使得每个皇后都位于不同的行、列和对角线上。我们可以采用回溯法来解决,...

    八皇后控制台程序

    回溯算法是解决八皇后问题的关键。当尝试在棋盘上放置皇后时,如果发现当前位置冲突,就回溯到上一步,尝试其他可能性。这个过程会递归进行,直到找到所有可能的解或确定无解。在C++中,可以使用递归函数和栈来实现...

    vb 八皇后源码下载

    在VB(Visual Basic)环境下,解决八皇后问题可以帮助初学者理解递归、回溯等编程概念,以及如何在实践中应用这些概念。下面我们将深入探讨八皇后问题的背景、解决方案以及VB源码实现。 八皇后问题要求在8×8的棋盘...

    MIT算法导论公开课之课程笔记 2.渐进符号、递归及解法.rar

    在解决组合优化问题,如八皇后问题、旅行商问题等时常用到。 通过深入理解和掌握这些基本概念,我们可以更好地设计和分析算法,以解决实际问题。MIT的算法导论课程正是以此为目标,旨在培养学生的思维能力和问题...

Global site tag (gtag.js) - Google Analytics