暴力求解法--8皇后问题
来源:互联网 发布:中传在线 网络教育 编辑:程序博客网 时间:2024/06/05 11:28
//C[i]记录第i行的皇后所在列,转变为全排列问题
#include <iostream>
#include <cstring>
using namespacestd;
const int maxn =20;
const int INF =1 << 30;
int n,tot = 0;
int C[maxn];
bool vis[3][maxn];
void search(int cur)
{
if (cur ==n) {
tot ++;
}
else{
for (int i =0; i < n; i ++) {
int ok =1;
C[cur] = i;
for (int j =0; j < cur; j ++) {
if (C[cur] ==C[j] || cur - C[cur] == j -C[j] || cur + C[cur] == j +C[j]) {
ok = 0;break;
}
}
if (ok) {
search(cur +1);
}
}
}
}
void search2(int cur)
{
if (cur ==n) {
tot ++;
}
else {
for (int i =0; i < n; i ++) {
if (!vis[0][i] && !vis[1][cur + i] && !vis[2][cur - i +n]) {
C[cur] = i;
vis[0][i] =vis[1][cur + i] =vis[2][cur - i +n] = 1;//记录,同列,对角线有没有放过
search2(cur +1);
vis[0][i] =vis[1][cur + i] =vis[2][cur - i +n] = 0;
}
}
}
}
int main()
{
cin >>n;
for(int i =0;i < n;i ++)C[i] = INF;
search(0);
cout <<tot << endl;
for (int i =0; i < 3; i ++) {
for (int j =0; j < maxn; j ++) {
vis[i][j] =0;
}
}
search2(0);
cout <<tot << endl;
return0;
}
- 暴力求解法--8皇后问题
- 暴力求解法_回溯法(八皇后问题,素数环,困难的串)
- 暴力求解法入门
- 暴力求解法
- 【算法学习笔记】14.暴力求解法03 回溯法01 N皇后和素数环
- 8皇后问题的两种解法
- 暴力求解法_隐式图搜索(八数码问题)
- 八皇后问题解法
- 八皇后问题解法
- 八皇后问题解法
- 八皇后问题解法
- N皇后问题解法
- 暴力求解法 最大乘积
- 暴力求解法--简单枚举
- 暴力求解法-简单枚举
- Harmonic Number(暴力求解法)
- 暴力求解法--生成子集
- 皇后问题的一个解法
- 自己对maven的理解——假如你结婚了
- 如何保存pb文件,并调用测试
- LightOJ1138 Trailing Zeroes (III)
- [leetcode]2. Add Two Numbers@Java解题报告
- 树莓派 一根网线 就可以登陆
- 暴力求解法--8皇后问题
- CSDN实现转载文章
- GIT
- 浅谈Manacher(马拉车)算法
- 独立集
- 短信发送器
- iOS占位文字placeholder设置技巧
- Unity移动物体到鼠标点击位置
- ACM 1005. 数独