《Cracking the Coding Interview》——第9章:递归和动态规划——题目9
2024-10-21 03:23:28
2014-03-20 04:08
题目:八皇后问题。
解法:DFS解决。
代码:
// 9.9 Eight-Queen Problem, need I say more?
#include <cstdio>
#include <vector>
using namespace std; class Solution
{
public:
void eigthQueens(int n, vector<vector<int> > &result) {
if (n < ) {
return;
} vector<int> v;
dfs(, n, v, result);
v.clear();
}
private:
void dfs(int idx, int n, vector<int> &v, vector<vector<int> > &result) {
if (idx == n) {
result.push_back(v);
return;
} int i, j;
for (i = ; i < n; ++i) {
for (j = ; j < idx; ++j) {
if (v[j] == i || myabs(idx - j) == myabs(i - v[j])) {
// conflict
break;
}
}
if (j == idx) {
v.push_back(i);
dfs(idx + , n, v, result);
v.pop_back();
}
}
} int myabs(int n) {
return (n >= ? n : -n);
}
}; int main()
{
vector<vector<int> > result;
Solution sol;
int n;
int i, j, k; while (scanf("%d", &n) == && n > ) {
sol.eigthQueens(n, result);
for (k = ; k < (int)result.size(); ++k) {
for (i = ; i < n; ++i) {
for (j = ; j < result[k][i]; ++j) {
putchar('');
}
putchar('');
for (j = result[k][i] + ; j < n; ++j) {
putchar('');
}
putchar('\n');
}
putchar('\n');
}
printf("%d\n", (int)result.size());
for (i = ; i < (int)result.size(); ++i) {
result[i].clear();
}
result.clear();
} return ;
}
最新文章
- 一个用纯CSS实现的下拉菜单
- Mac系统下配置Maven环境变量
- IE6 7下常见CSS兼容性处理
- sap MD04中常用函数
- 使用my exclipse对数据库进行操作(2)
- bzoj 3143 [Hnoi2013]游走(贪心,高斯消元,期望方程)
- CentOS下编译安装hping3
- mybatis知识点
- ie6+7+8等对background-color:rgba(),background-img渐变的兼容
- POJ2533:Longest Ordered Subsequence(LIS)
- Nginx启动报错:10013: An attempt was made to access a socket in a way forbidden
- [翻译]Eureka一窥
- ES2:ElasticSearch 集群配置
- 06 Activity的启动模式 Intent的七大属性的总结
- 插播一则关于HTTP Headers详解~~~
- thymeleaf-在font标签中的使用
- Nginx 测试环境配置,留作笔记使用
- Python3 join函数和os.path.join用法
- python -m SimpleHTTPServer 8080
- 脚本学习 game.sh
热门文章
- Linux教程之:Nginx [emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)
- Windows Python 版本切换工具 --- Switch Python Version Tool For Windows
- webpack-dev-server启动后, localhost:8080返回index.html的原理
- MySQL安装和简单操作
- iis 7 操作 .net
- Python的socket编程
- 分页查询关键代码 多条件查询关键代码 删除选中商品关键代码 修改要先回显再修改 修改要先回显再修改 同一业务集中使用同一servlet的方法
- jquery操作DOM 元素(3)
- HDU.2111 Saving HDU(贪心)
- elasticsearch-dsl聚合-2