八皇后问题
2015-07-26 08:55
309 查看
//刘汝佳的书用八皇后问题引出了回溯法。
看思路分析:
首先暴力枚举子集, 2的64次方,显然不行;
其次是从64个格子中选8个格子,这是组合问题,根据组合数学,有C64-8=4.426 * 10 9种;
然后是排列问题, 每行每列放一个, 就是0-7的排列, 再筛选,就是8! = 40320,感觉这种很简单了。
最后回溯解法, 4! = 24:见代码
看思路分析:
首先暴力枚举子集, 2的64次方,显然不行;
其次是从64个格子中选8个格子,这是组合问题,根据组合数学,有C64-8=4.426 * 10 9种;
然后是排列问题, 每行每列放一个, 就是0-7的排列, 再筛选,就是8! = 40320,感觉这种很简单了。
最后回溯解法, 4! = 24:见代码
#include<stdio.h> int tot = 0; int C[10]; int n = 8; void search(int cur) { if(cur == n) tot++; else for(int i = 0; i < n;++i) { int ok = 1; C[cur] = i;//尝试把第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); } } int main() { search(0); printf("%d\n", tot); }
相关文章推荐
- ZOJ 1967 POJ 2570 Fiber Network
- HDU 1969 Pie
- 查看Linux服务器的所占用的IP地址
- SQL 获取连接客户端IP地址
- poj3018(欧拉路)
- PHP中的include和require
- Spring IOC源码详解之容器初始化
- 算法情缘
- 继承与派生
- 算法情缘
- Android源码编译apk导入第三方包报错
- JSTL简介
- 堆串的基本运算
- Springmvc同一资源不同描述配置-contentnegotiatingviewresolver
- C++生产和使用的临时对象
- ajaxFileUpload上传文件后提示下载的问题
- 使用 autoruns.exe 来查看自动启动的程序
- NYOJ 14 场地安排(它可以被视为一个经典问题)
- LUXURY 7
- OCP053(400-600)