八皇后问题 回溯递归 -C++
2014-08-27 15:46
288 查看
解决问题的步骤:
了解问题是否能用递归来解决
确定递归的结束条件
确定递归的执行部分
基本思路:我们采用逐步试探的方式,先从一个方向往前走,能进则进,不能进则退,尝试另外的路径。首先我们来分析一下国际象棋的规则,这些规则能够限制我们的前进,也就是我们前进途中的障碍物。
![](http://img.blog.csdn.net/20140827154625772)
![](http://img.blog.csdn.net/20140827154427087)
(只显示了部分结果)
回溯法(非递归版)
了解问题是否能用递归来解决
确定递归的结束条件
确定递归的执行部分
基本思路:我们采用逐步试探的方式,先从一个方向往前走,能进则进,不能进则退,尝试另外的路径。首先我们来分析一下国际象棋的规则,这些规则能够限制我们的前进,也就是我们前进途中的障碍物。
#include<iostream> using namespace std; #define MAX 8 int queue[8],sum=0; void show() { for (int i=0;i<MAX;i++) { cout<<i<<':'<<queue[i]<<' '; } cout<<endl; sum++; } int check(int n) { for(int i=0;i<n;i++) { if(queue[i]==queue || queue[i]-queue ==n-i||queue -queue[i]==n-i) //判断斜率 return 1; } return 0; } void put(int n) { for (int i=0;i<MAX;i++) { queue =i;//假设/如果没有 if (!check(n))//如果没有发生冲突 { if(n==MAX-1) show(); else put(n+1);//递归 } } } int main() { put(0); cout<<sum<<endl; return 0; }
(只显示了部分结果)
回溯法(非递归版)
相关文章推荐
- 递归与回溯之经典八皇后问题
- 八皇后问题 回溯 非递归 java
- 八皇后问题---递归回溯
- 【C/C++】回溯经典算法之-->八皇后问题
- N皇后问题-回溯与递归-C++实现
- C++搜索与回溯算法之八皇后问题
- 递归--基于回溯和递归的八皇后问题解法
- 八皇后问题(典型的递归回溯)
- 经典回溯八皇后问题--递归
- N皇后问题(递归+回溯)的C++实现
- Java基于循环递归回溯实现八皇后问题算法示例
- 八皇后问题 回溯递归 C语言版
- 递归回溯之八皇后问题
- C# 用回溯递归解决“八皇后”问题
- 八皇后问题(递归、非递归——回溯)
- 迷宫问题--非递归回溯 C语言实现
- 八皇后问题求解----C++实现
- c++ 递归问题 研究
- 子集与子集和问题(Subset sum)的递归回溯解
- 迷宫问题--非递归回溯 C语言实现