八皇后问题
来源:互联网 发布:网络看电视软件 编辑:程序博客网 时间:2024/06/16 11:55
//刘汝佳的书用八皇后问题引出了回溯法。
看思路分析:
首先暴力枚举子集, 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);}
0 0
- 八皇后 n皇后 问题
- 八皇后N皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题(2)
- 八皇后问题(3)
- 八皇后问题
- 八皇后问题程序
- 浅谈八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 八皇后问题求解
- 八皇后问题
- 八皇后问题
- 八皇后问题
- 一起talk C栗子吧(第二十三回:C语言实例--队列二)
- poj3018(欧拉路)
- MATLAB 练习06 符号计算
- 堆串的基本运算
- Spring IOC源码详解之容器初始化
- 八皇后问题
- Android源码编译apk导入第三方包报错
- 继承与派生
- Mysqli:预编译 mysqli_stmt
- 递归算法
- 【记录】长按listview弹出删除选项,点击删除记录删除
- SQL 获取连接客户端IP地址
- Poj 2479 Maximum sum【双向DP/最大连续和】
- pandas multiIndex