回溯法解决八皇后问题
2017-02-23 13:07
253 查看
使用二维数组
vis[2][]直接判断当前尝试的皇后所在的列和两个对角线是否已经有其他皇后。
#include <iostream> #include<cstdio> #include<string.h> #define maxn 20 using namespace std; int cnt=0; int vis[3][maxn]; int n; int aa[maxn]; void search_1(int cur) { if(cur==n) cnt++; else { for(int i=0; i<n; i++) { if(!vis[0][i] && !vis[1][cur+i] && !vis[2][cur-i+n]) { aa[cur]=i; vis[0][i] =vis[1][cur+i] =vis[2][cur-i+n]=1; search_1(cur+1); vis[0][i] =vis[1][cur+i] =vis[2][cur-i+n]=0;//回溯!!! } } } } int main() { memset(vis,0,sizeof(vis)); while(scanf("%d",&n)!=EOF) { cnt=0;//每次读入一个n值,需要初始化一下计数器 search_1(0);//从cur=0开始递归 printf("%d\n",cnt); } return 0; }
相关文章推荐
- 第一次上传代码 处女秀-回溯法解决八皇后问题
- C++基于回溯法解决八皇后问题示例
- 回溯法解决八皇后问题--精简版
- 回溯法解决八皇后问题
- 八皇后问题解决及代码下载(回溯法)
- scala 回溯法解决八皇后问题
- 回溯法解决八皇后问题---用Java语言
- C语言八皇后问题解决方法示例【暴力法与回溯法】
- 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- 数据结构41:回溯法解决八皇后问题
- 回溯法解决“八皇后”问题
- 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- 回溯法解决八皇后问题
- 用回溯法解决子集和问题【C#版本】
- 位运算解决八皇后问题
- 回溯法解决N皇后问题——递归与非递归求解
- VC++2012编程演练数据结构《8》回溯法解决迷宫问题
- 回溯法解决装载问题